Oracle PL/SQL 的 union 與 union all 這兩種聯集的比較


在 Oracle PL/SQL 中,

unionunion all 的結果, 可能會不盡相同,

在此說明一下兩者的差異 :

SQL1 union SQL2 : SQL1+SQL2 後的資料會自動重新排序, 且 SQL1 與 SQL2 的重複資料只顯示一筆.

SQL1 union all SQL2: SQL1+SQL2 後資料不會自動重新排序, 且 SQL2 資料直接銜接到 SQL1 資料之後, 也就是 SQL1 與 SQL2 可以有重複資料.

參考範例, 如下 :
 程式碼
/* --------------------
建立 Temp Table
-------------------- */

create table tom1(
aa number
, bb varchar2(100)
);

/* --------------------
新增 Temp Data
-------------------- */

insert into tom1 values( 1, 'b' );
insert into tom1 values( 1, 'a' );
insert into tom1 values( 2, 'x' );
insert into tom1 values( 2, 'y' );
insert into tom1 values( 2, 'a' );
insert into tom1 values( 2, 'b' );
commit;

/* --------------------
利用 union 取得資料
-------------------- */

select bb
from tom1
where aa = 1
union
select bb
from tom1
where aa = 2;

-- 執行結果, 共有 4 筆
a
b
x
y


/* --------------------
利用 union all 取得資料
-------------------- */

select bb
from tom1
where aa = 1
union all
select bb
from tom1
where aa = 2;

-- 執行結果, 共有 6 筆
b
a
x
y
a
b


Related Posts Plugin for WordPress, Blogger...