SQL文の中にSELECT文を埋め込むことができます。埋め込まれたSELECT文によって抽出された値を利用することで、色々な条件指定をすることができます。
目次
単一の結果を返すサブクエリ
スカラ値(単一の値)
を返すサブクエリのことを スカラサブクエリ
といいます。
以下、SELECT句にスカラサブクエリを指定した例です。
SELECT カラム1, (SELECT SUM(カラムA) FROM テーブル2) AS SUMVALUE
FROM テーブル1;
以下、HAVING句にスカラサブクエリを指定した例です。
SELECT カラム1, AVG(カラム2)
FROM テーブル1
GROUP BY カラム1
HAVING AVG(カラム2) > (SELECT AVG(カラム2) FROM テーブル1);
複数の結果を返すサブクエリ
複数レコードを抽出する場合の使用例です。
以下、WHERE句にサブクエリを指定した例です。
SELECT id
FROM テーブル1
WHERE id IN (SELECT テーブル1_id
FROM テーブル2
WHERE 種別 = 5);
以下、JOINで結合するテーブルとしてサブクエリを指定した例です。
SELECT テーブル1.*, テーブル2_cnt.count
FROM テーブル1
LEFT JOIN (SELECT テーブル1_id, count(テーブル1_id)
FROM テーブル2
WHERE 条件
GROUP BY テーブル2.テーブル1_id) as テーブル2_cnt
ON テーブル1.id = テーブル2_cnt.テーブル1_id
WHERE 条件;