0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

データテーブルの連結ー縦方向3(積集合と差集合)

Last updated at Posted at 2021-02-14

テーブルとテーブルの連結には、縦方向(行が増える)と横方向(列が増える)の場合があります。
縦方向の場合は__集合__、横方向の場合は__結合__と言います。

集合には以下の3つのパターンがあります。
 和集合:複数のテーブルのレコードをすべて足す。
 積集合:複数のテーブルの共通するレコードを取り出す。
 差集合:他のテーブルと共通しないレコードを取り出す。

今回は、積集合と差集合について SQL を用いた例を紹介します。

###【積集合】
行いたい処理を下記とします。
image.png
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 へ変更される )
image.png

###【差集合】
行いたい処理を下記とします。
image.png

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(左右の外部結合)
データテーブルの連結ー交差結合

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?