パソコン・スマホの困ったを助けます!
SQL

SQL 2つのテーブルの和、差、積を求める〜union,except,intersect〜

SQLで2つのテーブルの和集合、差集合、積集合を結果に表示させます。

 

構造のよく似たテーブル同士を集合演算子によって

1つのSQL文で結果を表示できます。

 

SQLで2つのテーブルの和集合、差集合、積集合を行う

和集合を求める union

はじめに2つのテーブルを2つのselect文を掛け合わせて実行していきます。

使用するのはunion演算子です。

2つのselect文をunionを使って繋ぎます。

select 列名 from 1つ目テーブル union select 列名 from 2つ目テーブル;

 

列名の部分は同じ名前の列名を入力します。

これで2つのテーブルの和を1つのSQL文で求められます。

 

order byや別名を表示する場合は?

結果を順番に並び替えるorder byを使う場合は、

一番最後のselect文に入力してください。

別名のasを使う場合は、

最初のselect文で入力してください。

 

差集合を求める except

2つのテーブルの差を求める差集合ではexcept演算子を使用します。

和集合のunionと同様に2つのselect文を1つのSQL文に結合します。

 

select 列名 from 1つ目テーブル名 except select 列名 from 2つ目テーブル名;

列名では同じ列名を入力します。

 

和集合で紹介したorder byやasを使う際のポイントは同じです。

 

ウイルス対策できる除菌水

除菌グッズすら店頭では手に入らなくなってきている。

お店に行くこともリスクのひとつ。

だったら宅配でなおかつ安全性が保証されている

次亜塩素酸の除菌水使ってみませんか?

今なら加湿器プレゼント!空間除菌なら除菌水ジーア

積集合を求める intersect

2つのテーブルの重なり合う部分を求める積集合ではintersect演算子を使用します。

こちらも2つのselect文を1つのSQL文にします。

select 列名 from 1つ目テーブル名 intersect select 列名 from 2つ目テーブル名;

列名は同じ列名を入力します。

 

和集合で紹介したorder byやasを使う際のポイントは同じです。

 

まとめ

集合演算子の使い方はわかりましたか?

注意なのが検索結果を表示してくれるorder by句は便利ですが、

DBMSにとってはかなり処理が大変です。

性能の低いパソコンの場合は表示されるまでに時間がかかるかもしれません。

ABOUT ME
アバター
TANSAN
某パソコンショップ店員がパソコン・スマホで困った!という悩みを解決していきます。 ITパスポートの攻略法も随時更新中! PC・スマホで困ったことがあればTwitterのDMまで! 名前の由来は炭酸水が好きなので、でも間違えないでください 私の炭酸水好きは炭酸水が騒がれ始める10年も前から好きなんです。 サイト作りのコンセプトは「赤ちゃんでもパソコン・スマホの設定できるわかりやすいサイト作り」です。 私TANSANとUseful Labどっちもよろしく!!