前回
13. テーブルの足し算と引き算
13.1 集合演算とは
データベースでは集合とはレコードの集合(テーブルやビュー、クエリの実行結果)を指す。
集合演算を行うことで2つのテーブルにあるレコードを集めた結果や共通するレコードを集めた結果、片方のテーブルにのみあるレコードを集めた結果などを得ることができる。これらをおこなえる演算子を集合演算子という。
13.2 テーブルの和集合 UNION
レコードの加算を行うにはを用いる。すなわちレコードの和集合を求める。集合演算子はデフォルトで重複行を削除する。
SELECT A.a, A.b FROM ABC AS A UNION SELECT B.a, B,b FROM ABC2 AS B
13.2 集合演算子の注意
集合演算子には注意事項が存在する。によっては以下を自動的に解消するものも存在するが、互換性が無いのとどのような解消をするのかが不明瞭になりやすいため、依存しないことが望ましい。
レコードの列数 | 加算を行う一方ともう一方の列数は一致させなければならない。 |
---|---|
レコードのデータ型 | 対応する列はデータ型が一致していなければならない。 |
SELECT文での指定事項 |
13.3 重複行を残す演算子
集合演算子はデフォルトで重複行を削除するため、意図的に重複行を残したいのであれば、の後に
を追加する。
SELECT A.a, A.b FROM ABC AS A UNION ALL SELECT B.a, B,b FROM ABC2 AS B
13.4 テーブルの共通部分 INTERSECT
2つのレコードの共通部分を選択するにはを用いる。
SELECT A.a, A.b FROM ABC AS A INTERSECT SELECT B.a, B,b FROM ABC2 AS B
は1つのテーブルに対して複数の条件の共通部分を選択する一方で、
は必ず2つのテーブルを使用し、その共通するレコードを選択する。
13.5 レコードの減算 EXCEPT
2つのレコードの差分を取るには*1を用いる。
SELECT A.a, A.b FROM ABC AS A EXCEPT SELECT B.a, B,b FROM ABC2 AS B
*1:では
。