【SQL】UNIONで結果を統合する!UNION ALLとの違いや応用例を解説

  • 2024.08.16
       
【SQL】UNION、UNION ALLの基本をマスター

「UNION」句は、結果を統合するクエリで、主にSELECT文と併用して複数のテーブルから抽出したデータ結果を統合するのに使用されます。

本記事では、「UNION」句の基礎知識から、「UNION ALL」との違い、WHERE句やORDER BY句などとの併用方法を中心に詳しく解説します。

UNIONとは

SQLの「UNION」句は、複数のテーブルデータを統合するクエリです。複数の「SELECT」文をUNION句でつなげることで、それぞれのSELECT文で抽出した結果セットを一つにまとめられます。

【基本構文】

SELECT カラム名 FROM テーブルA UNION SELECT カラム名 FROM テーブルB;

UNIONとUNION ALLの違い

結果から紹介します。両者の違いは以下のとおりです。

UNION:重複した行を含めない(重複がある場合は除外して統合する)

UNION ALL:重複した行を含める(重複がある場合もすべて統合する)

【UNION】

【UNION ALL】

UNION句は、結果セット内の重複するデータを排除しますが、UNION ALLを使用すると重複したデータも結果に含まれます。以下が基本的なクエリとなります。

【UNION】

-- 重複するデータを排除して結合
SELECT カラム名 FROM テーブルA UNION SELECT カラム名 FROM テーブルB;

【UNION ALL】

-- 重複するデータも結合に含める
SELECT カラム名 FROM テーブルA UNION ALL SELECT カラム名 FROM テーブルB;

この操作を行う際、結合する各SELECT文のカラム数、順序、データ型が一致していることが必要な条件となります。これにより、異なるテーブルやクエリからのデータを、整合性を保ちながら一つの結果セットとしてまとめることができます。

あなたのご希望に沿った案件が必ず見つかります
【フリーランス向け】高収入好待遇の案件をご紹介

TECH MANIA フリーランス

≫まずは簡単60秒で無料お問い合わせから≪

UNIONの使い方

UNIONを適切に利用することで、異なるテーブル間で共通の属性を持つデータを効率的に抽出・統合することができます。以下の「テーブル1」「テーブル2」を例に、具体的な使用方法を見ていきましょう。

テーブル1

ユーザ名(name)購入ルート(route)購入日(date)購入額(price)
佐藤A2023-04-01 17:29:312100
鈴木B2023-04-05 13:10:453500

テーブル2

ユーザ名(name)購入ルート(route)購入日(date)購入額(price)
加藤A2023-04-19 11:37:011300
佐藤A2023-04-01 17:29:312100

UNION

UNIONを用いることで、複数のテーブルからデータを抽出し、重複する行を1行として表示します。これにより、データの一覧性が向上し、重複を避けることができます。

-- テーブル1とテーブル2からデータを選択し、重複を排除して結合
SELECT name, route, saved_date, price FROM テーブル1
UNION
SELECT name, route, saved_date, price FROM テーブル2;

結果:

ユーザ名(name)購入ルート(route)購入日(date)購入額(price)
佐藤A2023-04-01 17:29:312100
鈴木B2023-04-05 13:10:453500
加藤A2023-04-19 11:37:011300

UNION ALL

一方、UNION ALLはUNIONと異なり、重複する行もそのまま表示します。これにより、データの完全な統合が可能となり、どのテーブルからどのようなデータが抽出されたかが一目瞭然となります。

-- テーブル1とテーブル2からデータを選択し、重複も含めて結合
SELECT name, route, saved_date, price FROM テーブル1
UNION ALL
SELECT name, route, saved_date, price FROM テーブル2;

結果:

ユーザ名(name)購入ルート(route)購入日(date)購入額(price)
佐藤A2023-04-01 17:29:312100
鈴木B2023-04-05 13:10:453500
加藤A2023-04-19 11:37:011300
佐藤A2023-04-01 17:29:312100

UNIONの応用

続いて、UNIONを用いる際に一緒に活用できるWHERE句やORDER BY句の使用方法について詳しく説明していきます。

WHERE句

WHERE句をUNIONと組み合わせることで、異なる条件に基づいてデータをフィルタリングし、特定の基準を満たすデータのみを抽出することができます。

WHERE句は、それぞれのSELECT内で個別に適用されます。そのため、異なるテーブルまたは同一テーブルに対して異なる条件を設定できます。

SELECT 列名 FROM テーブル名1 WHERE 条件1
UNION
SELECT 列名 FROM テーブル名2 WHERE 条件2;

ORDER BY句

ORDER BY句は、UNIONを使用して結合された結果の並び順を制御します。

ORDER BYは全体の結果セットに対して適応されます。そのため、各SELECT内にORDER BYを記述するとエラーが発生します。

SELECT 列名 FROM テーブル名1
UNION
SELECT 列名 FROM テーブル名2
ORDER BY 列名 [ASC|DESC];

まとめ

本記事では、SQLのUNIONおよびUNION ALLについて解説しました。これらの知識を用いて、データベース操作をより効率的に行いましょう。

SQL関連記事

SQLの勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、SQLに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Otherカテゴリの最新記事