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之间的细微差异了。
相关文章
相关标签/搜索