はじめに
コジマです。
UNIONとUNION ALLの使い方について書いてみます。
どちらも表の出力結果を結合するものですが、違いがあります。
UNION ALL: 重複を削除しない
簡単な例で見てみましょう。
UNIONの例
サンプルSQL
WITH test AS ( SELECT 1 AS id, 'kojima' AS name UNION SELECT 2 , 'yoshida' UNION SELECT 3, 'tanaka' UNION -- 出力されない SELECT 3, 'tanaka' ) SELECT * FROM test;
出力結果
id | name |
1 | kojima |
2 | yoshida |
3 | tanaka |
UNION ALLの例
サンプルSQL
WITH test AS ( SELECT 1 AS id, 'kojima' AS name UNION SELECT 2 , 'yoshida' UNION SELECT 3, 'tanaka' UNION -- 出力される SELECT 3, 'tanaka' ) SELECT * FROM test;
出力結果
id | name |
1 | kojima |
2 | yoshida |
3 | tanaka |
3 | tanaka |
このような差があります。
複数条件でSELECTしたものを1つの表に出したいけど、WHERE複雑すぎて嫌になっちゃうよ~
というときに使えます。
SQLが長く冗長になるというデメリットがありますが、抽出条件を明確にしやすいためSQLの見通しを良くできます。
さいごに
UNIONの公式ドキュメントは以下になります。ご参考まで。
https://docs.microsoft.com/ja-jp/sql/t-sql/language-elements/set-operators-union-transact-sql?view=sql-server-ver15
この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!
以上、コジマでした。