【SQL】UNION/UNION ALLで表を結合する【SQL Server】

【SQL】UNION/UNION ALLで表を結合する【SQL Server】

はじめに

コジマです。

UNIONとUNION ALLの使い方について書いてみます。

どちらも表の出力結果を結合するものですが、違いがあります。

UNION: 重複を削除する
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)を
フォローしてくれたらうれしいです!

もっと学びたい人はこちら

SQLをもっと学びたいエンジニアのためにおすすめのUdemy講座を紹介いたします!

SQLはじめましての人!まずあなたの3時間をください。
この講座でまずこれだけは覚えてくれ!という内容をしっかり押さえることができます。
SQLはプログラミング言語がなんであれ、システム開発に必要になります。
この講座を見て最低限必要な知識を身に着けて実践で貢献できるようになりましょう!
3時間で学ぶ SQL ・データベース 超入門【丁寧な解説+演習問題で SQL データ抽出の基本が身につく】標準 SQL

データベースの設計について学べる講座です。
設計について学べる教材は少ないので、実務でデータベースを触る人にはとてもうれしい講座です。
データベース講座1:データベース論理設計

ちょっとニッチに感じるかもしれませんが、SQLのインデックスを学ぶことができる講座です。
よい性能でSQLを運用するためにはインデックスの理解は必要不可欠です。
CRUD書いて満足するエンジニアを出し抜きましょう。
SQLServerのインデックスを理解して検索を速くする方法

気になった人はぜひ見てみてくださいね!
以上、コジマでした。


SQLカテゴリの最新記事