13.2.10.4 ALL을 사용한 서브 쿼리
구문 :
operand
comparison_operator
ALL ( subquery
)
워드 ALL
(이것은 비교 연산자 다음에 지정해야합니다)는 "이 서브 쿼리가 반환 컬럼의 값 ALL
(모두)에 대해 비교가 TRUE
이면 TRUE
를 반환 "을 나타 합니다. 예 :
SELECT s1 FROM t1 WHERE s1> ALL (SELECT s1 FROM t2);
테이블 t1
에 (10)
를 포함한 행이 존재한다고합니다. 테이블 t2
에 (-5,0,+5)
가 포함되어 있으면 10
이 t2
의 3 가지 모든 값보다 크기 때문에이 수식은 TRUE
입니다. 테이블 t2
에 (12,6,NULL,-100)
이 포함되어있는 경우, 테이블 t2
는 10
보다 큰 단일 값 12
이 존재하기 때문에이 식은 FALSE
입니다. 테이블 t2
에 (0,NULL,1)
이 포함되어있는 경우,이 식은 불명 (즉, NULL
)입니다.
마지막으로, 테이블 t2
가 비어있는 경우이 수식은 TRUE
입니다. 따라서 테이블 t2
가 비어있을 때 다음 식은 TRUE
입니다.
SELECT * FROM t1 WHERE 1> ALL (SELECT s1 FROM t2);
그러나 테이블 t2
가 비어있을 때 다음 식은 NULL
입니다.
SELECT * FROM t1 WHERE 1> (SELECT s1 FROM t2);
또한 테이블 t2
가 비어있을 때 다음 식은 NULL
입니다.
SELECT * FROM t1 WHERE 1> ALL (SELECT MAX (s1) FROM t2);
일반적으로 NULL
값을 포함하는 테이블과 빈 테이블은 "엣지 케이스"입니다. 서브 쿼리를 작성할 때 항상이 두 가지 가능성을 고려 여부를 고려하십시오.
NOT IN
은 <> ALL
의 별칭입니다. 따라서 다음 두 명령문은 동일합니다.
SELECT s1 FROM t1 WHERE s1 <> ALL (SELECT s1 FROM t2); SELECT s1 FROM t1 WHERE s1 NOT IN (SELECT s1 FROM t2);