SQL 集計演算子編
2019-08-27
集合演算子
構造が似たテーブルを合算させることができるのが集合演算子。
構造が似たというのは、列数、列名が同じテーブルのことです。
例えば、家計簿データベースで行数が増えてきたので、アーカイブテーブルに古いデータを写した場合、構造が同じテーブルが2つできることになりますので、それらをもう一度がっちゃんこできるということです。
集合演算子には、いくつかの演算子がありますので、それぞれまとめます。
和集合を求める UNION
2つのSERECT文の検索結果を足し合わせます。
イメージとしてはテーブルの足し算(行の足し算)です。
なおUNIONでは重複行があった場合、1つにまとめます。
SELECT shohin_id, shohin_mei --式1
FROM shohin
UNION
SELECT shohin_id, shohin_mei --式2
FROM shohin2;
UNION ALL
は重複行があった場合も全て含めます。
SELECT shohin_id, shohin_mei --式1
FROM shohin
UNION ALL
SELECT shohin_id, shohin_mei --式2
FROM shohin2;
差集合を求める EXCEPT
レコードの引き算です。
式1EXCEPT 式2は式1から式2を引く、つまり式1にはあって式2にはないものが最後残ります。下記で言えば、shohinテーブルにはあるけど、shohin2テーブルにはないものが選ばれます。
SELECT shohin_id, shohin_mei --式1
FROM shohin
EXCEPT
SELECT shohin_id, shohin_mei --式2
FROM shohin2;
積集合を求める INTERSECT
両方のテーブルにある共通のものが選ばれます。
SELECT shohin_id, shohin_mei --式1
FROM shohin
INTERSECT
SELECT shohin_id, shohin_mei --式2
FROM shohin2;
集合演算子の注意点:
・集合対象となるレコードの数は同じであるべし
・足し算の対象となるレコードの列のデータ型は一致しているべし
・SELECT文はどんなものを指定してもいいが、ORDER BYは最後に一つだけ