FOR SE

文系の学部から新卒でメーカー系のSIerに就職。技術・スキルがないためブログを通して勉強。その後、IT業界の業界知識が活かせる人材業界に就職

このエントリーをはてなブックマークに追加

【SQL入門】複数テーブルから一つの結果を出力する~集合演算子別(union・union all・minus・intersect)に紹介~

【今回の紹介】

SQLを勉強中なのでその内容をメモレベルで記載します。


ちなみに今回はこの書籍を使用しながら学習しています。

SQLに関する本は数冊みましたが、これが具体的でわかりやすかったです(初心者目線です)

現場で使えるSQL―Oracle/SQL Server対応 (DB Magazine SELECTION)
現場で使える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テーブル 

参考①

参考②

参考②

.hatena-module:nth-of-type(10) { background: transparent; } .hatena-module:nth-of-type(10) .hatena-module-title{ display: none; } .hatena-module:nth-of-type(10) .hatena-module-body { padding: 0; }