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);