28. ANY and ALL
1. ANY
and ALL
Operators
ANY
및ALL
연산자는 단일 열 값과 다른 값의 범위를 비교할 수 있다.
2. Syntax
1) ANY
ANY
연산자는 결과로 부울 값을 반환하고, 하위 커리 값 중 하나라도 조건을 충족하는 경우TRUE
를 반환한다.ANY
연산자는 범위의 값 중 하나에 대해 연산이 참인 경우 조건이 참임을 의미한다.
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name
FROM table_name
WHERE condition);
2) ALL
ALL
연산자는 결과로 부울 값을 반환하고, 모든 하위 커리 값이 조건을 충족하면TRUE
를 반환한다.SELECT
,WHERE
및HAVING
문과 함께 사용된다.ALL
연산자는 범위의 모든 값에 대해 연산이 참인 경우에만 조건이 참임을 의미한다.
ALL
Syntax WithSELECT
ALL
Syntax WithWHERE
orHAVING
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name
FROM tbale_name
WHERE condition);
Demo Database
- 다음은 Northwind 샘플 데이터베이스의
Products
테이블이다.
- 다음은 Northwind 샘플 데이터베이스의
OrderDetails
테이블이다.
3. ANY
Examples
- 다음은
OrderDetails
테이블에서Quantity
가10
인 레코드를 찾으면ProductName
을 나열한다. Quantity
열의 일부 값이10
이므로TRUE
가 반환된다.
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);
- 다음은
OrderDetails
테이블에서Quantity
가99
보다 큰 레코드를 찾으면ProductName
을 나열한다. Quantity
열에99
보다 큰 값이 있기 때문에TRUE
가 반환된다.
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 99);
- 다음은
OrderDetails
테이블에서Quantity
가1000
보다 큰 레코드를 찾으면ProductName
을 나열한다. Quantity
열에1000
보다 큰 값이 없기 때문에FALSE
가 반환된다.
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 1000);
4. ALL
Examples
- 다음은 모든 제품 이름을 나열한다.
- 다음은
OrderDetails
테이블의 모든 레코드에Quantity
가10
인 경우ProductName
을 나열한다. Quantity
열에 다양한 값(10
의 값뿐만 아니라)이 있기 때문에 물론FALSE
를 반환한다.
SELECT ProductName
FROM Products
WHERE ProductID = ALL
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);