MYSQLのUNIONとUNION ALLの違い
今やっているプログラムで使わざるを得なくなったUNION構文。
UNIONとUNION ALL何が違うんだろう?と調べてみました。
SQLをわかっている方向けに説明すると、行全体にdistinctをかけるのがUNIONで、かけないのがUNION ALL。
つまりUNIONで連結した場合、全てのカラムの値が同じ行が複数あった場合、1行を残してすべてまとめられます。
1 2 3 4 5 | ---------------------- | col_a | col_b | ---------------------- | 0 | a | ---------------------- |
こんな取得結果をUNIONとUNION ALLにて連結した場合。
1 2 3 4 5 | ---------------------- | col_a | col_b | ---------------------- | 0 | a | ---------------------- |
これがUNION
1 2 3 4 5 6 7 | ---------------------- | col_a | col_b | ---------------------- | 0 | a | ---------------------- | 0 | a | ---------------------- |
これがUNION ALL