SQL UNIONについて
SQLでテーブル結合処理を行えるものの一つとして、UNIONがある。UNIONは、テーブルを縦方向に結合する。他の結合処理が可能なものとして、OUTER JOINとINNER JOINがあるが、これらは横方向にテーブルを結合する。
以下では、UNIONについての説明を行う。さらに、UNIONと似たUNION ALLもあるので、それについての説明も行う。
UNION
概要
UNIONでは、SQLで表示する2つのテーブルを縦に結合ができる。例として、以下2つのテーブルを用意する。
この2つのテーブルをUNIONで結合した結果が以下の通り。
シンプル。
SQLの書き方
上の例で紹介したようにテーブルをUNIONで結合したい場合、以下のようにSQLを記述する。
select * from test_table
union
select * from test3_table;
SQLの構造もシンプルで、SELECTで表示する2つのテーブルをUNIONでくっつけるという考え方になっている。
制約
UNIONでの結合の条件として、カラム数が揃っているということがある。言い換えれば、カラム数が揃っていればカラムの名前は合わせる必要はない(異なるカラム名のテーブルを結合する意味があるかどうかはわからない)。
また、UNIONは、暗黙的にDISTINCTが有効となっている。どういうことかというと、2つのテーブル間で内容が同じレコードがあると、そのレコードは複数ではなく1つ分として表示される。
例として、以下2つのテーブルを用意する。
(id1,name,id2)=(3,鈴木,3)が重複するレコードとなる。上2つのテーブルをUNIONで結合すると、以下の通りになる。
(id1,name,id2)=(3,鈴木,3)が2つ分ではなく、1つ分のみ表示されている。
UNION ALL
概要
レコードの重複を省略せずにテーブルを縦方向に結合したい場合は、UNION ALLを使う。
例として、上でも示した以下2つのテーブルを用意する。
(id1,name,id2)=(3,鈴木,3)が重複するレコードとなっている。この2つのテーブルをUNION ALLで結合した結果は以下の通り。
(id1,name,id2)=(3,鈴木,3)が2レコード分表示されている。
SQLの書き方
上の例で紹介したようにテーブルをUNION ALLで結合したい場合、以下のようにSQLを記述する。
select * from test_table
union all
select * from test4_table;
UNIONのときと構造は同じ。UNIONがUNION ALLに変わるだけ。
この記事が気に入ったらサポートをしてみませんか?