oracle中union 與union all區別

SQL SELECT .... SQL UNIONUNION ALL 操做符SQL UNION 操做符: UNION 操做符用於 合併兩個或多個SELECT 語句的 結果集。 ... 能夠看出, 使用 union 的時候, 結果集的排列 順序是按照升序排列的, 使用 union all 的時候, 結果集是按照記錄插入的 前後順序排列的。 union會過濾重複行數據,而union all則不會,會所有顯示出來。 
select
' ' datenum , '' datenumber ,to_date(to_char(sysdate,'dd-mm-yyyy'),'dd-mm-yyyy') datetime from dual
union
select to_char(trunc(to_date(to_char(sysdate, 'mm-dd-yyyy' ), 'mm-dd-yyyy' ), 'dd' )- rn + 1 , 'mm-dd-yyyy' ) datenum ,
to_char(trunc(to_date(to_char(sysdate, 'mm-dd-yyyy' ), 'mm-dd-yyyy' ), 'dd' )- rn + 1 , 'mm-dd-yyyy' ) datenumber ,
trunc(to_date(to_char(sysdate, 'mm-dd-yyyy' ), 'mm-dd-yyyy' ), 'dd' )- rn + 1
datetime
from (select rownum rn from all_objects where rownum< 32 )
它的結果與union all的結果是不同的。
 
select
to_char(trunc(to_date(to_char(sysdate, 'mm-dd-yyyy' ), 'mm-dd-yyyy' ), 'dd' )- rn + 1 , 'mm-dd-yyyy' ) datenum ,
to_char(trunc(to_date(to_char(sysdate, 'mm-dd-yyyy' ), 'mm-dd-yyyy' ), 'dd' )- rn + 1 , 'mm-dd-yyyy' ) datenumber ,
trunc(to_date(to_char(sysdate, 'mm-dd-yyyy' ), 'mm-dd-yyyy' ), 'dd' )- rn + 1
datetime
from (select rownum rn from all_objects where rownum< 32 )
union all   
select ' ' datenum , '' datenumber ,to_date(to_char(sysdate,'dd-mm-yyyy'),'dd-mm-yyyy') datetime from dual order by datetime desc
有時咱們會根據須要來選擇用union仍是union all。好比咱們要使用某些字段進行排序獲得不一樣的結果。就須要注意union 與union all之間的細微差異了。
相關文章
相關標籤/搜索