サブクエリ演算子¶
このトピックでは、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> )
使用上の注意¶
現在、相関 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);