複数のSELECT結果を統合するUNION、UNION ALL(和集合)
SQL Serverでは複数のSELECT結果を統合(和集合)することができます。UNIONもしくはUNION ALLを使用します。例えば、テーブル1とテーブル2の結果をまとめて検索したいときにUNION,UNION ALLを使用します。
UNION,UNION ALLはいわゆる和集合です。イメージ的には「テーブル1+テーブル2」のようなイメージです。
UNION
- 複数のSELECT結果を統合する。重複レコードは1行にまとめられる
UNION ALL
- 複数のSELECT結果を統合する。重複レコードはそのまま検索される
例1. UNIONで2つのテーブルを検索するパターン
--野球部のメンバーを取得する SELECT studentno,name FROM act_baseball; [結果] 15,佐藤太郎 20,山田一郎 44,田中花子 --サッカー部のメンバーを取得する SELECT studentno,name FROM act_soccer; [結果] 8,伊藤一 10,加藤和也 44,田中花子 --野球部とサッカー部のメンバー全員を取得する SELECT studentno,name FROM act_baseball UNION SELECT studentno,name FROM act_soccer order by 1; [結果] 8,伊藤一 10,加藤和也 15,佐藤太郎 20,山田一郎 44,田中花子
UNIONを使用することで別テーブル同士のSELECT結果をまとめて表示することができます。上の例では、野球部とサッカー部に所属しているメンバーをすべて取得しました。
テーブルは2つだけでなく、複数のテーブルを統合できます。注意点としては、テーブルの列は同じ数でないといけません。
例2. UNION ALLで2つのテーブルを検索するパターン
--野球部とサッカー部のメンバー全員を取得する SELECT studentno,name FROM act_baseball UNION ALL SELECT studentno,name FROM act_soccer order by 1; [結果] 8,伊藤一 10,加藤和也 15,佐藤太郎 20,山田一郎 44,田中花子 44,田中花子
UNION ALLを使用すると、重複レコードもふくめて表示することができます。上の例では、野球部とサッカー部に所属しているメンバーをすべて取得しましたが、野球部とサッカー部の両方に所属している「44,田中花子」が2件取得されました。
このように、重複をそのまま取得したい場合はUNION ALL、排除したい場合はUNIONを使用します。
以上、SQL Serverで複数のSELECT結果を統合(和集合)するUNION,UNION ALLでした。
コメント