2009/01/27

[oracle]union union allの違い

ついつい忘れがちになってしまうので、ちょっとまとめてみることに。

SELECT結果をマージします。ALLが無い場合、マージ後に重複レコードは排除されます。

また、SELECT結果で取得する列は、それぞれ同じ列数でなければなりません

via:複数のSELECT文の結果をマージする(UNION、UNION ALL)

ということは、、、

table:test1
column_1 column_2
-------- --------
hoge_1 0001
hoge_2 0002

table:test2
column_1 column_2
-------- --------
hoge_2 0002
hoge_3 0003

というテーブルがあった場合、

select *
from test1
union
select *
from test2

の結果は、

column_1  column_2
-------- --------
hoge_1 0001
hoge_2 0002
hoge_3 0003


と返すのに対して

select *
from test1
union all
select *
from test2

の結果は、

column_1  column_2
-------- --------
hoge_1 0001
hoge_2 0002
hoge_2 0002
hoge_3 0003

となります。

重複するしないは、結構、大きな違いなので、気をつけて使いたいかなと。

0 コメント:

コメントを投稿