SQL:union all和union的區別 和使用


如果我們需要將兩個select語句的結果作為一個整體顯示出來,我們就需要用到union或者union all關鍵字。

union(或稱為聯合)的作用是將多個結果合並在一起顯示出來。

UNION用的比較多union all是直接連接,取到得是所有值,記錄可能有重復
union 是取唯一值,記錄沒有重復
1、UNION 的語法:
[SQL 語句 1]
UNION
[SQL 語句 2]


2、UNION ALL 的語法:
[SQL 語句 1]
UNION ALL
[SQL 語句 2]

UNION和UNION ALL效率:

UNION和UNION ALL關鍵字都是將兩個結果集合並為一個,但這兩者從使用和效率上來說都有所不同。

1、對重復結果的處理:UNION在進行表鏈接后會篩選掉重復的記錄,Union All不會去除重復記錄。

2、對排序的處理:Union將會按照字段的順序進行排序;UNION ALL只是簡單的將兩個結果合並后就返回。

從效率上說,UNION ALL 要比UNION快很多,所以,如果可以確認合並的兩個結果集中不包含重復數據且不需要排序時的話,那么就使用UNION ALL。

注意:兩個要聯合的SQL語句字段個數必須一樣,而且字段類型要“相容”(一致);
union和union all關鍵字需要注意: 
union 和 union all都可以將多個結果集合並,而不僅僅是兩個,你可以將多個結果集串起來。 
使用union和union all必須保證各個select 集合的結果有相同個數的列,並且每個列的類型是一樣的。但列名則不一定需要相同,oracle會將第一個結果的列名作為結果集的列名。
例如下面是一個例子: 

select empno,ename from emp 
union 
select deptno,dname from dept 
我們沒有必要在每一個select結果集中使用order by子句來進行排序,我們可以在最后使用一條order by來對整個結果進行排序。例如: 

select empno,ename from emp 
union 
select deptno,dname from dept 
order by ename;

————————————————
版權聲明:本文為CSDN博主「琦彥」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/fly910905/article/details/86975052


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM