テーブルとテーブルの連結には、縦方向(行が増える)と横方向(列が増える)の場合があります。
縦方向の場合は__集合__、横方向の場合は__結合__と言います。
集合には以下の3つのパターンがあります。
和集合:複数のテーブルのレコードをすべて足す。
積集合:複数のテーブルの共通するレコードを取り出す。
差集合:他のテーブルと共通しないレコードを取り出す。
今回は、積集合と差集合について SQL を用いた例を紹介します。
###【積集合】
行いたい処理を下記とします。
table_1 と table_2 で共通するレコードだけ table_3 として取り出します。
create table table_3 as
select A, B from table_1
intersect
select A, C from table_2;
intersect は、SELECT文で取り出したデータを比較して、一致したレコードのみを取り出す演算子です。
各SELECT文での変数の順番が新しいテーブルの列名に対応し、2つ目のSELECT文の列名が最初のSELECT文の列名へ変更されます。
(この場合、table_2 の C が table_1 の B へ変更される )
create table table_4 as
select A, B from table_1
except
select A, C from table_2;
except の演算子は、最初の SELECT文 (table_1) のデータの中から、2番目の SELECT文 (table_2) に一致しないレコードのみを取り出します。
変数名の対応関係は積集合の場合と同様です。
####関連記事
データテーブルの連結-縦方向 1(異なる列名をそのまま残す場合)
データテーブルの連結-縦方向 2(異なる列名を統合する場合)
データテーブルの連結-横方向 1(完全外部結合)
データテーブルの連結-横方向 2(内部結合)
データテーブルの連結-横方向 3(左右の外部結合)
データテーブルの連結ー交差結合