SQL

【SQL】UNION、UNION ALLの使い方

検索結果を統合(和集合)する

複数の検索結果を統合し、1つの結果にするには「UNION」または「UNION ALL」を使用します。

「UNION」は次の図のように和集合を求める構文です。(Aの取得結果とBの取得結果を統合)

和集合

「UNION」と「UNION ALL」の違いは、重複を含めるかどうかです。

  • UNION:重複を含めない(重複があったら除外
  • UNION ALL:重複を含む(すべて抽出

スポンサーリンク

本記事では、「UNION」の使い方について解説していきます。

また、次のようなデータが格納されていることを前提としています。

【playerテーブル】※選手の情報を管理

ID (id) ※PK 名前 (name) 年齢 (age)
1001 鈴木 25
1002 佐藤 27
1003 田中 35
1004 橋本 29
1005 山本 40
1006 武田 22

【footballテーブル】※サッカーチームに所属しているメンバーを管理

ID (id) ※PK playerテーブルのID (userId)
1 1001
2 1002
3 1004
4 1005

【baseballテーブル】※野球チームに所属しているメンバーを管理

ID (id) ※PK playerテーブルのID (userId)
1 1002
2 1003
3 1004
4 1006

UNIONの使い方

「UNION」を使うことで、複数の検索結果を統合し1つの結果として取得することができます。

UNIONの基本構文

SELECT  列名  FROM  テーブル名1

UNION

SELECT  列名  FROM  テーブル名2

 

次の例では、サッカーチーム(baseballテーブル)と野球チーム(baseballテーブル)のいずれかに所属しているメンバーを取得しています。

■UNIONの使用例

SELECT  userId  FROM  football

UNION

SELECT  userId  FROM  baseball;

■実行結果

+--------+
| userId |
+--------+
|   1001 |
|   1002 |
|   1004 |
|   1005 |
|   1003 |
|   1006 |
+--------+
6 rows in set (0.00 sec)

佐藤さん(1002)と橋本さん(1004)は、サッカーチームと野球チームの両方に所属していますが、UNIONで統合したため、重複したレコードは1つのレコードとして統合されます。

UNION ALLの使い方

「UNION ALL」を使うことで、複数の検索結果を統合し1つの結果として取得することができます。

UNIONの基本構文

SELECT  列名  FROM  テーブル名1

UNION ALL

SELECT  列名  FROM  テーブル名2

 

次の例では、サッカーチーム(baseballテーブル)と野球チーム(baseballテーブル)のいずれかに所属しているメンバーを取得しています。

■UNION ALLの使用例

SELECT userId FROM football

UNION ALL

SELECT userId FROM baseball;

■実行結果

+--------+
| userId |
+--------+
|   1001 |
|   1002 |
|   1004 |
|   1005 |
|   1002 |
|   1003 |
|   1004 |
|   1006 |
+--------+
8 rows in set (0.00 sec)

佐藤さん(1002)と橋本さん(1004)は、サッカーチームと野球チームの両方に所属していますが、UNION ALLで統合したため、重複したレコードも取得しています。

helpful