SQL サブクエリとは何ですか?
SQLで、サブクエリとは、あるクエリ内の文に別のクエリを埋め込んだ状態を指します。サブクエリは、メインクエリの一部として使用したり、さらに別のサブクエリの中に含めたりすることができます。
主クエリ内の子クエリ
子クエリを、親クエリでレコードを絞り込んだり、集計項目を算出したり、論理式を評価したりするためなどに利用することができます。例えば、特定の条件を満たすレコードだけを抽出したり、各レコードの平均値や合計値を計算したりするために利用できます。
例えば、以下のクエリは平均売上よりも売上が多いすべての従業員情報を返します。
売上高が従業員の平均売上高を上回る従業員を抽出する。
サブクエリ内のサブクエリ
子クエリはさらに子クエリの一部となって多重にネストされたクエリを形成できます。その場合、内側のクエリが先に実行されその結果が外側のクエリに渡されます。
例えば、次のクエリでは、売上高の上位5人の従業員に関する情報が返されます。
SELECT *
FROM employees
WHERE employee_id IN (SELECT employee_id
FROM (SELECT employee_id, sales
FROM employees
ORDER BY sales DESC
LIMIT 5) AS subquery)
この例では、内部のサブクエリはまず売上を基準に従業員を降順に並べ、上位5人の従業員のIDと売上だけを選択します。その後、外部のサブクエリはこれらの従業員のIDを使用して完全な従業員情報を返します。
一言でいうならば、サブクエリとはSQLにおける複雑なデータのフィルタ、計算、抽出を行う際に非常に便利な手法である。