データベース設計

【SQL入門】副問合せ(サブクエリ)の使い方

副問合せ(サブクエリ)

副問合せとは、SELECT文の中にSELECT文を入れ子状態に埋め込むことをいい、サブクエリとも呼ばれています。

副問合せは、SELECT句やFROM句、WHERE句、HAVING句で利用できます。

副問合せの基本構文

  • SELECT句の例
    SELECT  列名,  (SELECT~)  AS  A  FROM  テーブル名  WHERE  条件;
  • FROM句の例
    SELECT  A.列名  FROM  (SELECT~)  A  WHERE  条件;
  • WHERE句の例
    SELECT  列名  FROM  WHERE  列名 =  (SELECT~)

※(SELECT~):副問合せ

本記事では、副問合せの使い方について紹介しています。

また「user」テーブルと「department」テーブルには、次のようなデータが格納されていることを前提としています。

ID (id) ※PK商品名 (name)住所(address)年齢(age)部署ID(department_id)
1001鈴木一郎東京都441
1002佐藤次郎埼玉県321
1003田中三郎千葉県244
1004伊藤四郎東京都222
1005斎藤五郎東京都352
■userテーブル
ID (id) ※PK部署名(name)
1営業部
2開発部
3総務部
■departmentテーブル

副問合せの例1:INを用いた副問合せ

次のSQLはINを用いた副問合せの例です。

SELECT * FROM department
WHERE id IN
(SELECT department_id FROM user WHERE address = '東京都');

■実行結果

+----+--------+
| id | name |
+----+--------+
| 1 | 営業部 |
| 2 | 開発部 |
+----+--------+

副問合せの例2:EXISTSを用いた副問合せ

次のSQLはEXISTSを用いた副問合せの例です。

SELECT * FROM department
WHERE EXISTS(
SELECT * FROM user WHERE department.id = user.department_id
);

■実行結果

+----+--------+
|  id | name |
+----+--------+
|  1 | 営業部 |
|  2 | 開発部 |
+----+--------+

SQL副問合せ(サブクエリ)の使い方について解説しました。SQLを学習されている方へのお力になれれば幸いです。

学習書の紹介

イラストでそこそこわかるSQL SELECT文と並び替え・集約のきほんのきまで

本書は「データをデータベースから取ってくる」操作に特化した、
SQLの解説書です。
本書は、データベースエンジニアではないけれど、「自分の思う通りにデータを取ってきたい」という方にお勧めの1冊です。

【こんな方にお勧めします】
・データ分析を始めたばかりの方
・分析力をアップしたいマーケター
・フロントエンドエンジニアやWebデザイナー
・表計算ソフトでのデータの抽出・分析に限界を感じている方

学習書のお求めは、こちらから → IT開発関連書とビジネス書が豊富な翔泳社の通販『SEshop』

-データベース設計