logo

SQL相関サブクエリ

SQL では、相関サブクエリは、外部クエリの列を参照するサブクエリです。サブクエリは、現在の行の値を使用して外側のクエリの行ごとに繰り返し実行されます。サブクエリの結果は、外側のクエリの評価に使用されます。

相関サブクエリは行ごとの処理に使用されます。各サブクエリは、外側のクエリの行ごとに 1 回実行されます。



相関サブクエリは、親ステートメントによって処理される行ごとに 1 回評価されます。親ステートメントは次のとおりです。 選択する アップデート 、 または 消去 声明。

構文:

列 1、列 2、…を選択します。

FROM table1 外側



WHERE 列 1 演算子

(SELECT 列 1、列 2

テーブル2から



WHERE expr1 =

外側.expr2);

相関サブクエリは、テーブル内のすべての行を読み取り、各行の値を関連データと比較する方法の 1 つです。これは、サブクエリがメイン クエリで考慮された候補行ごとに異なる結果または結果のセットを返す必要がある場合に常に使用されます。つまり、相関サブクエリを使用すると、親ステートメントによって処理される各行の値に応じて答えが決まる複数の部分からなる質問に答えることができます。

ネストされたサブクエリと相関サブクエリ

通常のネストされたサブクエリでは、内部 選択する クエリが最初に実行され、1 回実行され、メイン クエリで使用される値が返されます。ただし、相関サブクエリは、外側のクエリで考慮された候補行ごとに 1 回実行されます。言い換えれば、内部クエリは外部クエリによって駆動されます。

注記: を使用することもできます。 どれでも そして 全て 相関サブクエリの演算子。 相関サブクエリの例: 自分の部門の平均給与よりも高い収入を得ているすべての従業員を見つけます。

クエリ:

SELECT last_name, salary, department_id  FROM employees outer  WHERE salary>(SELECT AVG(salary) FROM 従業員 WHERE 部門 ID = 外部.部門 ID グループ別部門 ID);>>

相関関係のその他の使用法は次のとおりです。 アップデート そして 消去

関連するアップデート

UPDATE table1 alias1  SET column = (SELECT expression   FROM table2 alias2  WHERE alias1.column =  alias2.column);>

相関サブクエリを使用して、あるテーブルの行を別のテーブルの行に基づいて更新します。

相関削除

DELETE FROM table1 alias1  WHERE column1 operator  (SELECT expression  FROM table2 alias2  WHERE alias1.column = alias2.column);>

相関サブクエリを使用して、あるテーブルの行を別のテーブルの行に基づいて削除します。

モニターの画面サイズはどれくらいですか

EXISTS 演算子の使用

EXISTS 演算子は、サブクエリの結果セット内の行の存在をテストします。サブクエリ行の値が見つかった場合、条件にフラグが立てられます。 真実 内部クエリでは検索は続行されず、見つからない場合は条件にフラグが立てられます。 間違い そして検索は内部クエリで続行されます。
EXIST 演算子の使用例:
少なくとも 1 人の部下がいる従業員を見つけます。

クエリ:

SELECT employee_id, last_name, job_id, department_id FROM employees outer WHERE EXISTS ( SELECT ’X’ FROM employees WHERE manager_id = outer.employee_id);>

出力:

NOT EXIST 演算子の使用例
従業員がいない部門をすべて検索します。

クエリ:

SELECT department_id, department_name FROM departments d WHERE NOT EXISTS (SELECT ’X’ FROM employees WHERE department_id = d.department_id);>

出力:

SQL 相関サブクエリに関するよくある質問 - FAQ

相関サブクエリと通常のサブクエリの違いは何ですか?

通常のサブクエリ (非相関) は外部クエリから独立しており、メイン クエリが実行される前に 1 回だけ評価されます。対照的に、相関サブクエリは外側のクエリに依存しており、メイン クエリの行ごとに実行されます。

相関サブクエリはどのような場合に使用する必要がありますか?

相関サブクエリは、外部クエリ自体からの値の参照を必要とする何らかの条件に基づいて外部クエリの結果をフィルタリングする必要がある場合に便利です。これらは、条件が関連テーブルのデータに依存するシナリオでよく使用されます。