≫ トップ ≫ DML ≫ 選択 (集合演算子) ≫ 複数の検索結果を統合する(和集合)
複数の検索結果を統合して,1つの結果にするにはUNION句を使用します.UNION句は検索結果の和集合を求める構文です.複数の検索結果に重複したレコードがある場合は1つのレコードのみが抽出されます.重複したレコードも取得したい場合はUNION ALLを使用します.
UNION句を用いたSQLの基本的な書き方は以下とおりです.
SELECT 列名1, 列名2, ... FROM テーブル名
UNION [ALL]
SELECT 列名1, 列名2, ... FROM テーブル名
上記では簡単のためWHERE句などは省略していますが,もちろん通常のSELECT文で使用可能な構文はUNION句で検索結果を統合する場合にも使用可能です.
例として以下の2つのテーブルから全レコードを取得し,結果を1つに統合します.
従業員
従業員コード | 従業員名 |
---|---|
A0001 | チャーリー |
A0002 | ペパーミント |
受給者
受給者コード | 受給者名 |
---|---|
A0001 | チャーリー |
B0001 | スヌーピー |
B0002 | ウッドストック |
SQL
SELECT * FROM 従業員
UNION
SELECT * FROM 受給者
結果
従業員コード | 従業員名 |
---|---|
A0001 | チャーリー |
A0002 | ペパーミント |
B0001 | スヌーピー |
B0002 | ウッドストック |
チャーリーは従業員マスタと受給者マスタの両方にデータがあります.UNION句を使用するとこのような重複したレコードは1つのレコードとして統合されます.
SQL
SELECT * FROM 従業員
UNION ALL
SELECT * FROM 受給者
結果
従業員コード | 従業員名 |
---|---|
A0001 | チャーリー |
A0002 | ペパーミント |
A0001 | チャーリー |
B0001 | スヌーピー |
B0002 | ウッドストック |
チャーリーは従業員マスタと受給者マスタの両方にデータがあります.UNIONはUNION ALLと異なり,このような重複したレコードも取得されます.
注意.
サンプルで使用するテーブルは説明のため正規化を行っていなかったり,一般的でない列が含まれている場合があります.ご容赦ください.