相関サブクエリの実行プロセス
サブクエリの実行が外部クエリに依存している場合、通常はサブクエリ内のテーブルが外部テーブルを使用していることが原因です。が実行されるため、外部クエリが実行されるたびにサブクエリを再計算する必要があります。このようなサブクエリは相関サブクエリと呼ばれます。メイン クエリの各行が実行されると、相関サブクエリが行ごとの順序で実行されます。
説明: メイン クエリの列をサブクエリで使用します。
Title: last_name、給与、および給与が上限を超える従業員の合計をクエリします。部門の平均給与 その部門 ID
方法 1: 関連サブクエリ
FROM
SELECT last_name,salary,e1.department_id FROM employees e1,(SELECT department_id,AVG(salary) dept_avg_sal FROM employees GROUP BY department_id) e2 WHERE e1.`department_id` = e2.department_id AND e2.dept_avg_sal < e1.`salary`;
from タイプでサブクエリを使用しますサブクエリ: subquery As from の一部では、サブクエリを () で囲む必要があり、サブクエリには
という名前を付け、「一時仮想テーブル」として使用する必要があります。
タイトル: 従業員 ID、給与を部門名で並べ替えてクエリします。
ORDER BY でサブクエリを使用します:
SELECT employee_id,salary FROM employees e ORDER BY ( SELECT department_name FROM departments d WHERE e.`department_id` = d.`department_id` );
関連するサブクエリは次のとおりです。通常は、サブクエリ内の条件を満たす行があるかどうかを確認するために EXISTS 演算子と一緒に使用されます。
サブクエリに条件を満たす行がない場合:
条件は FALSE を返します
サブクエリでの検索を続行します
If in the subqueryサブクエリ 条件を満たす行があります:
サブクエリでの検索を続行しないでください
条件は TRUEを返します
NOT EXISTS キーワードは、特定の条件が満たされない場合を示します。存在する場合は TRUE が返され、存在しない場合は FALSE が返されます。
タイトル: 会社のマネージャーの従業員 ID、姓、ジョブ ID、部門 ID 情報をクエリします。
SELECT employee_id, last_name, job_id, department_id FROM employees e1 WHERE EXISTS ( SELECT * FROM employees e2 WHERE e2.manager_id = e1.employee_id);
サブクエリは、実際には未知のテーブルをクエリした後の条件判断ですが、自己結合はベースとなります。既知の独自のデータテーブル
に対して条件判断を行うため、ほとんどの DBMS で自己結合処理が最適化されます。
以上がMySQLサブクエリの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。