ANY / ALL
ANY 및 ALL 연산자를 사용하면 단일 열 값과 다른 값의 범위를 비교할 수 있다.
ANY
ANY 는 범위의 값 중 하나에 대해 연산이 참인 경우 조건이 참임을 의미한다.
결과로 부울 값을 반환한다.
하위 쿼리 값 중 하나라도 조건을 충족하는 경우 TRUE를 반환한다.
구문
operator는 표준 비교 연산자(=, <>, !=, >, >=, < 또는 <=)를 사용해야한다.
SELECT column_name(s) FROM table_name WHERE column_name operator ANY (SELECT column_name FROM table_name WHERE condition);
데이터베이스 예시
제품 테이블
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
---|---|---|---|---|---|
1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18 |
2 | Chang | 1 | 1 | 24 – 12 oz bottles | 19 |
3 | Aniseed Syrup | 1 | 2 | 12 – 550 ml bottles | 10 |
4 | Chef Anton’s Cajun Seasoning | 2 | 2 | 48 – 6 oz jars | 22 |
5 | Chef Anton’s Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
6 | Grandma’s Boysenberry Spread | 3 | 2 | 12 – 8 oz jars | 25 |
7 | Uncle Bob’s Organic Dried Pears | 3 | 7 | 12 – 1 lb pkgs. | 30 |
8 | Northwoods Cranberry Sauce | 3 | 2 | 12 – 12 oz jars | 40 |
9 | Mishi Kobe Niku | 4 | 6 | 18 – 500 g pkgs. | 97 |
주문상세 테이블
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
6 | 10250 | 41 | 10 |
7 | 10250 | 51 | 35 |
8 | 10250 | 65 | 15 |
9 | 10251 | 22 | 6 |
10 | 10251 | 57 | 15 |
OrderDetails 테이블의 모든 레코드에 수량이 10과 같다는 것을 발견하면 ProductName을 나열
수량 열의 일부 값이 10이기 때문에 TRUE가 반환된다.
SELECT ProductName FROM Products WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);
기본 예시
ProductName |
---|
Chais |
Chang |
Chef Anton’s Cajun Seasoning |
Uncle Bob’s Organic Dried Pears |
Konbu |
Tofu |
Pavlova |
Teatime Chocolate Biscuits |
Sir Rodney’s Scones |
Guaraná Fantástica |
NuNuCa Nuß-Nougat-Creme |
Gumbär Gummibärchen |
Thüringer Rostbratwurst |
Nord-Ost Matjeshering |
Sasquatch Ale |
Steeleye Stout |
Gravad lax |
Côte de Blaye |
Boston Crab Meat |
Jack’s New England Clam Chowder |
Singaporean Hokkien Fried Mee |
Perth Pasties |
Tourtière |
Pâté chinois |
Raclette Courdavault |
Tarte au sucre |
Louisiana Fiery Hot Pepper Sauce |
Scottish Longbreads |
Mozzarella di Giovanni |
Rhönbräu Klosterbier |
Original Frankfurter grüne Soße |
OrderDetails 테이블의 모든 레코드에 수량이 99보다 큰 것을 발견하면 ProductName을 나열
수량 열의 일부 값이 99보다 크기 때문에 TRUE가 반환된다.
SELECT ProductName FROM Products WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 99);
기본 예시
ProductName |
---|
Steeleye Stout |
Pâté chinois |
OrderDetails 테이블의 모든 레코드에 수량이 1000보다 큰 것을 발견하면 ProductName을 나열
수량 열에 1000보다 큰 값이 없기 때문에 FALSE가 반환된다.
SELECT ProductName FROM Products WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 1000);
기본 예시
ProductName |
---|
모든 제품 이름을 나열
SELECT ALL ProductName FROM Products WHERE TRUE;
기본 예시
ProductName |
---|
Chais |
Chang |
Aniseed Syrup |
Chef Anton’s Cajun Seasoning |
Chef Anton’s Gumbo Mix |
Grandma’s Boysenberry Spread |
Uncle Bob’s Organic Dried Pears |
Northwoods Cranberry Sauce |
Mishi Kobe Niku |
Ikura |
Queso Cabrales |
Queso Manchego La Pastora |
Konbu |
Tofu |
Genen Shouyu |
Pavlova |
Alice Mutton |
Carnarvon Tigers |
Teatime Chocolate Biscuits |
Sir Rodney’s Marmalade |
Sir Rodney’s Scones |
Gustaf’s Knäckebröd |
Tunnbröd |
Guaraná Fantástica |
NuNuCa Nuß-Nougat-Creme |
Gumbär Gummibärchen |
Schoggi Schokolade |
Rössle Sauerkraut |
Thüringer Rostbratwurst |
Nord-Ost Matjeshering |
Gorgonzola Telino |
Mascarpone Fabioli |
Geitost |
Sasquatch Ale |
Steeleye Stout |
Inlagd Sill |
Gravad lax |
Côte de Blaye |
Chartreuse verte |
Boston Crab Meat |
Jack’s New England Clam Chowder |
Singaporean Hokkien Fried Mee |
Ipoh Coffee |
Gula Malacca |
Røgede sild |
Spegesild |
Zaanse koeken |
Chocolade |
Maxilaku |
Valkoinen suklaa |
Manjimup Dried Apples |
Filo Mix |
Perth Pasties |
Tourtière |
Pâté chinois |
Gnocchi di nonna Alice |
Ravioli Angelo |
Escargots de Bourgogne |
Raclette Courdavault |
Camembert Pierrot |
Sirop d’érable |
Tarte au sucre |
Vegie-spread |
Wimmers gute Semmelknödel |
Louisiana Fiery Hot Pepper Sauce |
Louisiana Hot Spiced Okra |
Laughing Lumberjack Lager |
Scottish Longbreads |
Gudbrandsdalsost |
Outback Lager |
Fløtemysost |
Mozzarella di Giovanni |
Röd Kaviar |
Longlife Tofu |
Rhönbräu Klosterbier |
Lakkalikööri |
Original Frankfurter grüne Soße |
OrderDetails 테이블의 모든 레코드에 수량이 10과 같은 경우 ProductName을 나열
Quantity 열이 많은 다른 값을 가지고 있기 때문에 10의 값뿐만 아니라 FALSE를 반환한다.
SELECT ProductName FROM Products WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);
기본 예시
ProductName |
---|
참고
W3C School - SQL ANY and ALL Operators
W3C School - SQL Tutorial