MySQL ANY 및 ALL 연산자
MySQL ANY 및 ALL 연산자
및 연산자 ANY
를 ALL
사용하면 단일 열 값과 다른 값 범위를 비교할 수 있습니다.
ANY 연산자
ANY
연산자 :
- 결과로 부울 값을 반환합니다.
- 하위 쿼리 값 중 하나라도 조건을 충족하는 경우 TRUE를 반환합니다.
ANY
범위의 값 중 하나에 대해 작업이 참인 경우 조건이 참임을 의미합니다.
모든 구문
SELECT column_name(s)
FROM table_name
WHERE
column_name operator ANY
(SELECT column_name
FROM table_name
WHERE
condition);
참고: 연산자 는 표준 비교 연산자(=, <>, !=, >, >=, < 또는 <=)여야 합니다.
ALL 연산자
ALL
연산자 :
- 결과로 부울 값을 반환합니다.
- 모든 하위 쿼리 값이 조건을 충족하면 TRUE를 반환합니다.
- 는
SELECT
,WHERE
및HAVING
문과 함께 사용됩니다.
ALL
범위의 모든 값에 대해 작업이 true인 경우에만 조건이 true임을 의미합니다.
SELECT를 사용한 ALL 구문
SELECT ALL column_name(s)
FROM table_name
WHERE
condition;
WHERE 또는 HAVING이 있는 ALL 구문
SELECT column_name(s)
FROM table_name
WHERE
column_name operator ALL
(SELECT column_name
FROM table_name
WHERE condition);
참고: 연산자 는 표준 비교 연산자(=, <>, !=, >, >=, < 또는 <=)여야 합니다.
데모 데이터베이스
다음은 Northwind 샘플 데이터베이스 의 "제품" 테이블에서 선택한 항목입니다.
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 |
"OrderDetails" 테이블 에서 선택 :
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 |
SQL ANY 예
다음 SQL 문은 OrderDetails 테이블에서 Quantity가 10인 레코드를 찾으면 ProductName을 나열합니다(Quantity 열의 일부 값이 10이므로 TRUE가 반환됨).
예시
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);
다음 SQL 문은 OrderDetails 테이블에서 Quantity가 99보다 큰 레코드를 찾으면 ProductName을 나열합니다(Quantity 열에 99보다 큰 값이 있기 때문에 TRUE가 반환됨).
예시
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 99);
다음 SQL 문은 OrderDetails 테이블에서 Quantity가 1000보다 큰 레코드를 찾으면 ProductName을 나열합니다(Quantity 열에 1000보다 큰 값이 없기 때문에 FALSE를 반환함).
예시
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 1000);
SQL ALL 예
다음 SQL 문은 모든 제품 이름을 나열합니다.
예시
SELECT ALL ProductName
FROM Products
WHERE TRUE;
다음 SQL 문은 OrderDetails 테이블의 모든 레코드에 Quantity가 10인 경우 ProductName을 나열합니다. Quantity 열에 값이 10일 뿐만 아니라 다양한 값이 있기 때문에 당연히 FALSE를 반환합니다.
예시
SELECT ProductName
FROM Products
WHERE ProductID = ALL
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);