« 緑の東京タワーの目前で自転車壊れる、の巻。 | 記事一覧へ | ゼロからはじめるVPN 増補・新装版 »

2007年03月19日

●Oracle UNIONとUNION ALL

[あとで読む]

oracle_logo.gif

検索結果集合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




コメントする

※コメント・スパムが多いため、承認制を取っています。
  また、コメント返信がいつも遅くなりがちなのですが、、><
  コメント頂くと、とても嬉しいですので、お気軽にどうぞ♪