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之间的细微差别了。

你可能感兴趣的:(UNION,UNION,oracle,职场,休闲,all)