하위 쿼리 연산자¶
하위 쿼리 는 다른 쿼리 내의 쿼리입니다. 하위 쿼리 연산자는 하위 쿼리에서 생성된 값에 대한 작업을 수행합니다.
Snowflake는 다음과 같은 하위 쿼리 연산자를 지원합니다.
ALL / ANY¶
ALL 및 ANY 키워드를 사용해 (두 개 이상의 행을 반환할 수 있는) 하위 쿼리로 생성된 값에 비교 연산자를 적용할 수 있습니다.
구문¶
<expr> comparisonOperator { ALL | ANY } ( <query> )
여기서:
comparisonOperator ::=
{ = | != | > | >= | < | <= }
사용법 노트¶
예¶
직원이 없는 부서를 찾으려면 != ALL
하위 쿼리를 사용하십시오.
SELECT department_id
FROM departments d
WHERE d.department_id != ALL (
SELECT e.department_id
FROM employees e);
[ NOT ] EXISTS¶
EXISTS 하위 쿼리는 WHERE 또는 HAVING 절이나 부울 식에서 작동하는 모든 함수에서 나타날 수 있는 부울 식입니다.
EXISTS 식은 하위 쿼리로 생성되는 행이 있는 경우 TRUE로 계산됩니다.
NOT EXISTS 식은 하위 쿼리로 생성되는 행이 없는 경우 TRUE로 계산됩니다.
구문¶
[ NOT ] EXISTS ( <query> )
사용법 노트¶
예¶
직원이 없는 부서를 찾으려면 상관 관계가 있는 NOT EXISTS 하위 쿼리를 사용하십시오.
SELECT department_id
FROM departments d
WHERE NOT EXISTS (
SELECT 1
FROM employees e
WHERE e.department_id = d.department_id);
[ NOT ] IN¶
IN 및 NOT IN 연산자는 하위 쿼리에서 생성된 값에 식이 포함되어 있는지 여부를 확인합니다.
구문¶
<expr> [ NOT ] IN ( <query> )
사용법 노트¶
IN은
= ANY
의 축약형으로, ANY 하위 쿼리와 똑같은 제한 사항이 적용됩니다.NOT IN은
!= ALL
의 축약형으로, ALL 하위 쿼리와 똑같은 제한 사항이 적용됩니다.[NOT] IN 은 하위 쿼리가 포함되지 않은 식의 연산자로도 사용할 수 있습니다. 자세한 내용은 [ NOT ] IN 섹션을 참조하십시오.
예¶
(이 항목의 앞부분에 있는) != ALL
하위 쿼리 예와 동일한 NOT IN 하위 쿼리를 사용하여 직원이 없는 부서를 찾습니다.
SELECT department_id
FROM departments d
WHERE d.department_id NOT IN (
SELECT e.department_id
FROM employees e);