【SQL】サブクエリとは(WHERE句・FROM句)

サブクエリとは

サブクエリとは、副問合せとも呼ばれます。

SELECT 文で取得した結果を他の SELECT 文の中で利用する使い方です。

クエリ(query)は、問い合わせという意味です。

主に、WHERE句で使用されることが多いものの、実際の開発現場ではFROM句で使用されることも多々あります。

またサブクエリは、INSERT文、UPDATE文、DELETE文でも使用できます。

 

WHERE句にあるサブクエリ

WHERE句の条件式でサブクエリで取得した1つの値と比較する使い方です。

サンプルコード(WHERE句内でのサブクエリ)

// worldテーブルにあるnameカラムのデータを取得
SELECT name FROM world
// WHERE句でサブクエリを使用(populationがRussiaより大きいもの)
WHERE population > (SELECT population  FROM world  WHERE name = 'Russia');

 

FROM句にあるサブクエリ

FROM句でサブクエリを使用すると、SELECTした結果を1つのテーブルとして、他のテーブルと結合することができます。

サンプルコード(FROM句内でのサブクエリ)

SELECT
    User.uketsuke_date,
    User.uketsuke_no,
    User.age,
    User.order_no,
    User.zairyo_cd
FROM
   // FROM句内でのサブクエリ
   (
      SELECT
          U.*,  // m_userテーブル内のすべてのデータを取得
          O.order_no,  // t_orderテーブルのorder_noカラムのデータを取得
          Z.zairyo_cd  // zairyoテーブルのzairyo_cdを取得
      FROM
          m_user U  // m_userテーブルを「U」として扱う
      LEFT JOIN t_order O ON U.control_no = O.control_no  // m_userとt_orderを外部結合
      LEFT JOIN zairyo Z ON U.zairyo_cd = Z.zairyo_cd  // さらに、zairyoテーブルも外部結合
   ) AS User  // FROM句のサブクエリを別名(User)として扱う

上記のように、FROM句内のサブクエリでは、複数のテーブルを内部結合・外部結合することができます。

SQLを実行する際にだけ、VIEWを作成するようなイメージです。

 

サブクエリではなくWITH句を用いる方法もある

データを抽出する際、サブクエリとは別にWITH句を用いる方法もあります。

詳しくは、以下の記事を参考ください。

【PostgreSQL】WITH句の使い方(WITH句を複数回使用する方法)

2021.06.03

 

おすすめ書籍・Udemy

■おすすめ入門書①
スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

■おすすめ入門書②
いちばんやさしい SQL 入門教室

■おすすめ入門書③
ゼロからわかる SQL超入門 (かんたんIT基礎講座)

 

■Udemyのおすすめ講座①
はじめてのテーブル設計・データベース設計

■Udemyのおすすめ講座②
3時間で学ぶ SQL ・データベース 超入門

■Udemyのおすすめ講座③
はじめてのSQL ・データ分析入門