スカラサブクエリと複数レコードを返すサブクエリ

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 条件;
よかったらシェアしてね!
目次