LoginSignup
0
0

More than 1 year has passed since last update.

UNION ALLとは

クエリの結果を一緒にするために使う。

具体例

データ

こういうデータがあったとする。

+----+------+------+------+
| id | x    | y    | z    |
+----+------+------+------+
|  1 |    1 |    2 |    3 |
|  2 |    5 |    5 |    2 |
|  3 |    4 |    7 |    1 |
|  4 |    3 |    3 |    8 |
+----+------+------+------+

SQL発行

idと(x,y,z)カラムをtablesテーブルからSELECTする。

SELECT id, x AS value FROM tables
UNION ALL
SELECT id, y AS value FROM tables
UNION ALL
SELECT id, z AS value FROM tables

クエリ結果

3つのSELECTの結果がくっついてることがわかる。

+----+------+
| id | col  |
+----+------+
|  1 |    1 |
|  2 |    5 |
|  3 |    4 |
|  4 |    3 |
|  1 |    2 |
|  2 |    5 |
|  3 |    7 |
|  4 |    3 |
|  1 |    3 |
|  2 |    2 |
|  3 |    1 |
|  4 |    8 |
+----+------+

周辺

UNIONとUNION ALLの違い

挙動

UNIONは重複しているものが削除されます。
以下、UNIONで発行した結果ですが、(id, col)の組み合わせで重複しているものが排除されています。

+----+------+
| id | col  |
+----+------+
|  1 |    1 |
|  2 |    5 |
|  3 |    4 |
|  4 |    3 |
|  1 |    2 |
|  3 |    7 |
|  1 |    3 |
|  2 |    2 |
|  3 |    1 |
|  4 |    8 |
+----+------+

パフォーマンス

ユニークである挙動を持っているため、UNIONの方が重いらしいです。

注意点

上の例だと、x,y,zはいずれも整数型であり揃ってますね:thumbsup:
同じテーブルの似たようなカラムなので条件は満たしていそうです。
なお、型に関しては暗黙的に変換できるものなら大丈夫だそう。

0
0
0

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
0
0