はじめに
SQLのUNION使ってますか?
複数の実行結果を統合したいときに、それぞれエクセルにエクスポートして、列結合して...なんてやり方で無理やり統合したりしてませんよね?
今回はそんな愚かなやり方をしていて先輩にUNIONを教えてもらった自分が、反省がてら簡単にUNIONとUINIONALLについてまとめてみました。
UNIONって何?
2つのSQLの実行結果を統合する構文のことです。
SELECT 列名1, 列名2 FROM テーブル1
UNION
SELECT 列名1, 列名2 FROM テーブル2;
このように書くことができます。
具体的に、実行結果がそれぞれ以下のようになるSQLがあったとします。
| id | 好きな食べ物 |
|---|---|
| 1 | ラーメン |
| 2 | パスタ |
| 3 | うどん |
| id | 好きな食べ物 |
|---|---|
| 10 | カレー |
| 20 | ハヤシライス |
| 30 | ガパオライス |
これをUNIONで結合すると
| id | 好きな食べ物 |
|---|---|
| 1 | ラーメン |
| 2 | パスタ |
| 3 | うどん |
| 10 | カレー |
| 20 | ハヤシライス |
| 30 | ガパオライス |
となります。便利ですね。
UNIONALLとはどう違うの?
重複が削除されるかどうかという違いがあります。
UNIONを使用した場合重複結果が削除されるのに対し、UNIONALLでは重複結果は削除されません。
例えば、以下のような実行結果をUNIONで統合した場合
| id | 好きな食べ物 |
|---|---|
| 1 | ラーメン |
| 2 | パスタ |
| id | 好きな食べ物 |
|---|---|
| 1 | ラーメン |
| 20 | ハヤシライス |
このように表示されます。
| id | 好きな食べ物 |
|---|---|
| 1 | ラーメン |
| 2 | パスタ |
| 20 | ハヤシライス |
しかし、UNIONALLで統合した場合
| id | 好きな食べ物 |
|---|---|
| 1 | ラーメン |
| 2 | パスタ |
| 1 | ラーメン |
| 20 | ハヤシライス |
と表示されます。
重複削除を必要としない場合は、UNIONALLの方が高速なのでそちらを使うことをお勧めします。
終わりに
SQLには便利な構文が意外と沢山ありますね。そんな便利機能を教えてくれる先輩の存在はありがたい限りです。感謝の心を忘れてはいけません🙏
先輩曰く、UNION後のORDER BYについて調べてみても面白いとのことなので今度まとめてみます!(予定)