하위 쿼리 연산자
하위 쿼리 는 다른 쿼리 내의 쿼리입니다. 하위 쿼리 연산자는 하위 쿼리에서 생성된 값에 대한 작업을 수행합니다.
Snowflake는 다음과 같은 하위 쿼리 연산자를 지원합니다.
ALL / ANY
ALL 및 ANY 키워드를 사용해 (두 개 이상의 행을 반환할 수 있는) 하위 쿼리로 생성된 값에 비교 연산자를 적용할 수 있습니다.
구문
<expr> comparisonOperator { ALL | ANY } ( <query> )
여기서:
comparisonOperator ::=
{ = | != | > | >= | < | <= }
사용법 노트
식은 하위 쿼리가 반환하는 각 값에 대한 연산자와 비교됩니다.
ALL 이 지정된 경우, 결과는 하위 쿼리의 모든 행이 조건을 충족하면 TRUE 이고 그렇지 않으면 FALSE 를 반환합니다.
ANY 가 지정된 경우, 결과는 하위 쿼리의 한 행이라도 조건을 충족하면 TRUE 이고 그렇지 않으면 FALSE 를 반환합니다.
ANY/ALL 하위 쿼리는 현재 WHERE 절에서만 지원됩니다.
ANY/ALL 하위 쿼리는 OR 연산자의 인자로 나타날 수 없습니다.
하위 쿼리는 SELECT 목록에 하나의 항목만 포함해야 합니다.
예
직원이 없는 부서를 찾으려면 != ALL 하위 쿼리를 사용하십시오.
SELECT department_id
FROM departments d
WHERE d.department_id != ALL (
SELECT e.department_id
FROM employees e);
[ NOT ] EXISTS
EXISTS 하위 쿼리는 WHERE 또는 HAVING 절이나 부울 식에서 작동하는 모든 함수에서 나타날 수 있는 부울 식입니다.
구문
[ NOT ] EXISTS ( <query> )
사용법 노트
상관 관계가 있는 EXISTS 하위 쿼리는 현재 WHERE 절에서만 지원됩니다.
상관 관계가 있는 EXISTS 하위 쿼리는 OR 연산자에 대한 인자로 나타날 수 없습니다.
상관 관계가 없는 EXISTS 하위 쿼리는 부울 식이 허용되는 곳이면 어디서든 지원됩니다.
예
직원이 없는 부서를 찾으려면 상관 관계가 있는 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);