SQLでのサブクエリ入門

SQLでのサブクエリ入門

サブクエリとは?

サブクエリ(ネストクエリ)とは、SQL文の中に含まれる別のSQLクエリのことです。主にSELECT文、INSERT文、UPDATE文、DELETE文の中で使用されます。

WHERE句でのサブクエリの使用

サブクエリは、主にWHERE句で特定の条件を満たすデータを取得する際に使われます。


SELECT name, age FROM employees
WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'Sales');
    

FROM句でのサブクエリの使用

サブクエリをFROM句で使用すると、一時的なテーブルのように扱えます。


SELECT avg_salary FROM (SELECT AVG(salary) AS avg_salary FROM employees);
    

SELECT句でのサブクエリの使用

SELECT句でサブクエリを使用すると、各行ごとに計算結果を取得できます。


SELECT name, salary, (SELECT AVG(salary) FROM employees) AS avg_salary FROM employees;
    

相関サブクエリとは?

相関サブクエリは、外側のクエリの各行に対して個別に実行されるサブクエリです。


SELECT name, salary FROM employees e1
WHERE salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id);
    

サブクエリとJOINの違い

サブクエリは可読性が高いですが、JOINのほうがパフォーマンスが良い場合があります。

サブクエリのネスト(入れ子)

サブクエリは複数入れ子にすることも可能です。


SELECT name FROM employees
WHERE department_id = (SELECT department_id FROM departments WHERE location_id = (SELECT location_id FROM locations WHERE city = 'Tokyo'));
    

サブクエリのパフォーマンス向上のポイント

サブクエリを使用する際は、以下の点に注意するとパフォーマンスが向上します。

  • インデックスを適切に使用する
  • JOINを検討する
  • EXISTSを活用する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です