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) ※PKplayerテーブルのID (userId)
11001
21002
31004
41005

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

ID (id) ※PKplayerテーブルのID (userId)
11002
21003
31004
41006

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