●Oracle UNIONとUNION ALL

検索結果集合Aと検索結果集合Bをあわせた結果を求めるときに、
UNION演算子を使用するが、UNION ALLというものもある。
(差分を求めるためのMINUS演算子というものもある。)
UNIONは重複行を排除するのに比べて、UNION ALLは重複行も含める。
FRUIT_A、FRUIT_Bに以下のようなデータが格納されている。
■検索結果集合A
select ID, NAME, AMMOUNT from FRUIT_A;
ID Name Ammount
-------------------------------
1 Apple 10
2 Banana 30
3 Orange 20
■検索結果集合B
select ID, NAME, AMMOUNT from FRUIT_B;
ID Name Ammount
-------------------------------
1 Mango 20
2 Banana 30
3 Kiwi 20
UNIONの結果。
■A UNION Bの結果(order by 1)
select ID, NAME, AMMOUNT from FRUIT_A
union select ID, NAME, AMMOUNT from FRUIT_B;
ID Name Ammount
-------------------------------
1 Apple 10
1 Mango 20
2 Banana 30
3 Kiwi 20
3 Orange 20
UNION ALLの結果
■A UNION ALL Bの結果(order by 1)
select ID, NAME, AMMOUNT from FRUIT_A
union all select ID, NAME, AMMOUNT from FRUIT_B;
ID Name Ammount
-------------------------------
1 Apple 10
1 Mango 20
2 Banana 30
2 Banana 30 ※重複行も表示される
3 Kiwi 20
3 Orange 20





