【SQL】unionとunion allの違い
unionとunion allの違い
テーブルに重複するデータが発生した場合、
union allとunionでは処理が少し異なります。
union all
テーブルを縦に結合する
結合するテーブルに重複するデータがあっても、
そのまま結合する
身長・体重のデータが格納されたテーブルがあったとしよう。
この2つのテーブルをunion allするとどうなるか。
どうなるのか確認してみましょう。
テーブル①
テーブル②
同じ人のデータが格納されていましたね。
さて、union allで結合してみましょう。
重複した状態でテーブルが結合されました。
このようにunion allの場合は、重複が発生した状態でテーブルが縦に結合されました。
union
テーブルを縦に結合することは、union allと同じです。
union allとの違いとしては、重複が発生した場合、
そのデータは削除されて結合されます。
結合するテーブルは先程と同じです。
赤枠で囲まれたところが、重複発生箇所です。
テーブル①
テーブル②
さて、これをunionで結合してみましょう。
union allのときと、結果が異なりましたね。
そうです、重複がなくなりました。
参考文献
SQLの入門書として、こちらの本が非常におすすめです。
わかりやすい解説と練習問題が非常に沢山用意されており、
勉強した内容を実際のクエリを書いて理解を確認することができます。
スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)
- 作者: 中山清喬,飯田理恵子,株式会社フレアリンク
- 出版社/メーカー: インプレス
- 発売日: 2018/11/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
まとめ
このように、union allとunionの違いは、
結合対象のテーブルに重複が発生するか否かで結果が異なることです。
union all
重複が発生したまま、結合する
union
重複が発生しない