はじめに
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
について調べてみても面白いとのことなので今度まとめてみます!(予定)