サブクエリ演算子¶
サブクエリ は、別のクエリ内のクエリです。サブクエリ演算子は、サブクエリによって生成された値に対する操作を実行します。
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);