【SQL入門】INTERSECT,EXCEPT,UNIONの違いを図解
はじめに
INTERSECT, EXCEPT, UNIONの違いを図で表現します!
複数のテーブルを扱う際に利用する上記のクエリ。
サンプルクエリも用いてご説明をいたします。
参考文献
入門者の方に非常におすすめの本になります。
わかりやすい解説から、練習問題までたくさん用意されているので、
SQLの習得に有用ではないかと思います。
スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)
- 作者: 中山清喬,飯田理恵子,株式会社フレアリンク
- 出版社/メーカー: インプレス
- 発売日: 2018/11/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
サンプルデータ
今回の解説で用いるテーブル2つです。
table①
名前 | 部署 |
---|---|
田中 | 営業 |
鈴木 | 経理 |
佐藤 | 人事 |
table②
名前 | 部署 |
---|---|
高橋 | 営業 |
鈴木 | 経理 |
清水 | 開発 |
INTERSECT
INTERSECTのイメージは2つの円が重なるところ。
2つのテーブルで重複するレコードを抽出してくれます。
クエリ
SELECT * FROM table① INTERSECT SELECT * FROM table②
実行結果
名前 | 部署 |
---|---|
鈴木 | 経理 |
2つのテーブルで重複する部分が抽出できました。
EXCEPT
EXCEPTは、2つのテーブルの差分を抽出してくれます。
クエリ
SELECT * FROM table① EXCEPT SELECT * FROM table②
EXCEPTを用いる際には、順番が重要です。
最初に書いたテーブルから2つ目に記載したテーブルを引きます。
そのため、今回の例ではtable①からtable②を引きます。
実行結果
名前 | 部署 |
---|---|
田中 | 営業 |
佐藤 | 人事 |
UNION
UNIONは、2つのテーブルで重複が発生すると、
重複を削除した上でテーブルを結合してくれます。
クエリ
SELECT * FROM table① UNION SELECT * FROM table②
実行結果
名前 | 部署 |
---|---|
田中 | 営業 |
鈴木 | 経理 |
佐藤 | 人事 |
高橋 | 営業 |
清水 | 開発 |
実行結果は、このようになりました。
2つのテーブルで共通していた鈴木さんの重複がなくなり、
テーブルが結合されております。
UNION ALL
UNIONとUNION ALLは異なり、
2つのテーブルで重複が発生していても、そのまま結合します。
クエリ
SELECT * FROM table① UNION ALL SELECT * FROM table②
実行結果
名前 | 部署 |
---|---|
田中 | 営業 |
鈴木 | 経理 |
佐藤 | 人事 |
高橋 | 営業 |
鈴木 | 経理 |
清水 | 開発 |
このように鈴木さんは重複しておりますが、
重複したままデータが残っております。
ちなみに、UNIONとUNION ALLの違いに関しては、
以前の別記事に詳しく解説をしております。
よろしければそちらもご覧いただけますと嬉しいです。
まとめ
INTERSECT:重複部分のみ抽出
EXCEPT:差分を抽出
UNION:重複を除外して結合
UNION ALL:テーブルを結合
このような違いがあります。
参考文献
入門者の方に非常におすすめの本になります。
わかりやすい解説から、練習問題までたくさん用意されているので、
SQLの習得に有用ではないかと思います。
スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)
- 作者: 中山清喬,飯田理恵子,株式会社フレアリンク
- 出版社/メーカー: インプレス
- 発売日: 2018/11/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る