【SQL入門】複数テーブルから一つの結果を出力する~集合演算子別(union・union all・minus・intersect)に紹介~
【今回の紹介】
SQLを勉強中なのでその内容をメモレベルで記載します。
ちなみに今回はこの書籍を使用しながら学習しています。
SQLに関する本は数冊みましたが、これが具体的でわかりやすかったです(初心者目線です)
現場で使えるSQL―Oracle/SQL Server対応 (DB Magazine SELECTION)
【内容】
複数のテーブルから一つの結果を取得したいときに
どんなSQLがあるかというのを紹介します
具体的な用途としてはこんなものがあるかと思います、、
例)4半期の売上を各商品の集計方法でだしときなど
※実際に業務で使用していたSQLです。
集合演算子別に紹介していきます
■重複レコードは除き取得したい
select A from Aテーブル union select B from Bテーブル
注意
①結合テーブルのカラム数は同一にする
②結合カラムの型は同じか変換可能なもの
③unionは重複行を削除するため、
重複行を削除しないunion allのほうが早いといわれている
■重複レコードも取得したい
select A from Aテーブル union all select B from Bテーブル
■BテーブルB列比較してAテーブルのみある列のレコードを取得したい
select A from Aテーブル minus select B from Bテーブル
■A列とB列で共通するのみレコードのみ取得したい。
select A from Aテーブル intersect select B from Bテーブル