【SQL】UNIONについて
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
こんにちは。駆け出しエンジニアの竹前です。
ここでは、SQLのUNION演算子について説明します。
SQLについて勉強している方の参考になれば幸いです。
UNIONとは
UNION演算子は、複数のテーブルのデータを合わせて表示する場合に使います。
複数のテーブルのデータを表示する場合、通常のSELECT文では、表示するテーブルの分だけ実行する必要があり、実行結果はテーブルごとに表示されます。
UNIONでSELECT文をつなげることで、複数のテーブルのデータを一括にまとめて表示することができます。
SELECT 列名 FROM テーブル1 UNION SELECT 列名 FROM テーブル2;
テーブル1とテーブル2のSELECT文をUNIONで繋いでいます。
このとき、テーブル1とテーブル2の表示する列名とデータ型は同じである必要があります。
SELECT文については、以下の記事をご覧ください。
UNIONの使い方
まず、以下のようなtb1テーブルとtb2テーブルがあるとします。なお、画像はMySQLのものです。
以下のサンプルコードで、tb1テーブルとtb2テーブルのデータを合わせて表示します。
SELECT * FROM tb1 UNION SELECT * FROM tb2;
tb1テーブルとtb2テーブルのデータが合わせて表示されました。
tb1テーブルとtb2テーブルの両方に存在するcol1の値が3の行は、データがすべて等しいため、1行にまとめられています。
また、SELECT文に条件を指定することもできます。
SELECT * FROM tb1 WHERE col3 >= 70
UNION
SELECT * FROM tb2 WHERE col3 >= 60;
SELECT文にWHERE句で条件を指定することにより、tb1テーブルのcol3の値が70以上、tb2テーブルのcol3の値が60以上の行が表示されました。
UNION ALLとは
UNIONでは、複数のテーブルでデータが重複した行は、1行にまとめられました。
データが重複した行も表示したい場合は、UNION ALLを使います。
SELECT 列名 FROM テーブル1 UNION ALL SELECT 列名 FROM テーブル2;
テーブル1とテーブル2のSELECT文をUNION ALLで繋いでいます。
UNION ALLの使い方
UNIONのサンプルコードと同様に、tb1テーブルとtb2テーブルを使用します。
以下のサンプルコードで、tb1テーブルとtb2テーブルのデータを合わせて表示します。
SELECT * FROM tb1 UNION ALL SELECT * FROM tb2;
tb1テーブルとtb2テーブルのデータが合わせて表示されました。
tb1テーブルとtb2テーブルの両方に存在するcol1の値が3の行は、2行表示されています。
また、UNIONと同様に、SELECT文に条件を指定することもできます。
SELECT * FROM tb1 WHERE col3 >= 70
UNION ALL
SELECT * FROM tb2 WHERE col3 >= 60;
SELECT文にWHERE句で条件を指定することにより、tb1テーブルのcol3の値が70以上、tb2テーブルのcol3の値が60以上の行が表示されました。
正社員/フリーランスの方でこのようなお悩みありませんか?
- 自分に合う案件を定期的に紹介してもらいたい
- 週2、リモートワークなど自由な働き方をしてみたい
- 面倒な案件探し・契約周りは任せて仕事に集中したい
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート