【SQL】UNIONで重複行を排除せず残す方法!わかりやすく解説する!

Web技術
スポンサーリンク

SQLのUNIONで重複行を残す方法は?

UNION ALLってどんなときに使うの?

わかりやすく教えてほしい!

こういった疑問にこたえます。

この記事を読めば
  • UNIONで重複行を残すことができるようになる
  • UNION ALLの使い方がわかるようになる

エンジニアの僕がわかりやすく解説します。

UNION ALLの使い方

UNIONはテーブルの足し算を行う集合演算子ですが、重複行を排除してしまいます。

重複行を排除しないようにするにはUNIONの後ろに「ALL」というオプションを付けるだけです。

例えば、次のようなshohinテーブルとshohin2テーブルがあったとします。

shohin_meishohin_bunruikakaku
Tシャツ衣服1500
フライパンキッチン用品2000
鉛筆事務用品100
ボールペン事務用品150
shohinテーブル
shohin_meishohin_bunruikakaku
Tシャツ衣服1500
まな板キッチン用品700
包丁キッチン用品1000
shohin2テーブル

この二つのテーブルを足し合わせた結果を得るには次のようなSQLを実行します。

SELECT shohin_mei, shohin_bunrui, kakaku
  FROM shohin
UNION ALL
SELECT shohin_mei, shohin_bunrui, kakaku
  FROM shohin2;

実行結果

shohin_meishohin_bunruikakaku
Tシャツ衣服1500
フライパンキッチン用品2000
鉛筆事務用品100
ボールペン事務用品150
Tシャツ衣服1500
まな板キッチン用品700
包丁キッチン用品1000
UNION実行結果

実行結果を見てみると、shohinとshohin2のテーブルどちらにも存在する「Tシャツ」のレコードは排除されず残っています。

このようにALLオプションを付けると重複行を残す形でUNIONすることが可能です。

UNION ALLの使い方まとめ

解説の内容をまとめます。

  • UNIONで重複行を残したい場合、ALLオプションをつける

以上、お疲れ様でした。

コメント

タイトルとURLをコピーしました