複数の検索結果を統合し、1つの結果にするにはUNIONまたはUNION ALLを用います。今回はUNION、UNION ALLについて紹介します。
結果の結合方法
basketballテーブル
| id | player_id |
| 1 | 1001 |
| 2 | 1002 |
| 3 | 1004 |
| 4 | 1005 |
tennisテーブル
| id | player_id |
| 1 | 1002 |
| 2 | 1003 |
| 3 | 1004 |
| 4 | 1006 |
UNION
重複を含めず、(重複があったら除外)に抽出します。
SQL
SELECT カラム名 FROM テーブル名1
UNION
SELECT カラム名 FROM テーブル名2下記のように記載することで、どちらかに所属をしているplayer_idを重複せずに抽出することができます。
SQL
SELECT player_id FROM basketball
UNION
SELECT player_id FROM tennis;抽出結果
SQL
1001
1002
1004
1005
1003
1006player_id1002、1004の2名はどちらにも含まれていますが、重複せずに抽出されています。
UNION ALL
重複を含めて、(重複があったら除外せず)に抽出します。
SQL
SELECT player_id FROM テーブル名1
UNION ALL
SELECT player_id FROM テーブル名2下記のように記載することで、どちらかに所属をしているplayer_idを重複を含めて抽出することができます。
SQL
SELECT player_id FROM basketball
UNION ALL
SELECT player_id FROM tennis;抽出結果
SQL
1001
1002
1004
1005
1002
1003
1004
1006player_id1002、1004の2名はどちらにも含まれているので、重複して抽出されています。
エンジニアからのアドバイス
UNIONは重複しているかを確かめてから抽出が行われるため、UNION ALLよりも処理が重くなる傾向があります。UNIONは必要な際にのみ用いましょう。
