LoginSignup
53
39

More than 3 years have passed since last update.

UNION とUNION ALLの違い

Last updated at Posted at 2019-08-17

UNION と UNION ALL の違いをご説明します。

UNION ALL は、名の通り、UNION の 兄弟みたいなものです。
なので、まずは、UNIONの話をします。

UNION とは

2つのSQLの実行結果を縦方向に合体(連結)させる機能。

具体的には、こんな感じです。

  • 1個目のSQLの実行結果
test_pk test_val
1 a
2 b
  • 2個目のSQLの実行結果
test_pk test_val
2 b
10 a2
11 b2
13 c2
  • UNIONで合体(連結)させた実行結果
test_pk test_val
1 a
2 b
10 a2
11 b2
13 c2
  • UNIONを使ったSQL
select test_pk, test_val from test1
union 
select test_pk, test_val from test2

2つのSQLの実行結果を縦方向に合体(連結)させる機能です。

特異機能

合体(連結)させるときに、あることをやっています。
それは、「重複の削除」。

1個目と2個目の実行結果で、同じ行(重複行)は、省いて表示します。
例で言いますと、以下が1個目と2個目で、重複しています。

  • 1個目と2個目のSQLで重複している行
test_pk test_val
2 b

重複なしであれば、2行表示されますが、重複を削除しているので、1行で表示されます。

注意点

  • 2つのSQLの項目(test_pk, test_val)の「数」、「型」が、一致しないとNG。

UNION ALL とは

UNION の特殊機能(重複の削除)を止めた機能です。

  • UNION ALLで合体させた実行結果
test_pk test_val
1 a
2 b
2 b
10 a2
11 b2
13 c2
  • UNION ALLを使ったSQL
select test_pk, test_val from test1
union all 
select test_pk, test_val from test2

以下が1個目と2個目のSQLで、重複していますが、UNION ALLの実行結果も重複しています。

  • 1個目と2個目のSQLで重複している行
test_pk test_val
2 b
  • UNION ALLで合体(連結)させた実行結果
test_pk test_val
1 a
2 b
2 b
10 a2
11 b2
13 c2

個人的な使いどころ

UNION ALLは、調査でデータを抽出したいときに、良く使います。
2つのSQLを2回実行して、Excelでソートするという手もあるのですが、
1回で実行して、ついでに並び替えしたいとか。
そういうときによく使います。

UNIONは、正直使う機会がありませんでした。
調査で使うので、重複している行も確認したいことが多かったので。

53
39
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
39