(SQL Server) UNION ALL / UNION differences

本篇同步發佈在 Medium 平台上 Medium 連結


UNION 為集合運算中的其中一種,簡單來說它就是將兩個以上的 SQL 指令產生的結果進行合併。以下將利用 SQL Server 示範 UNION ALL 以及 UNION 兩個指令,並比較兩者之間的差異 !


首先,先產出以下兩張資料表並 Insert 一些資料,如下 :

  • 資料表[Employee] 欄位[EmpID]、[EmpName]

  • 資料表[Customer] 欄位[CustID]、[CustName]


UNION ALL

UNION ALL 結果為 : Jerry, Allen, Tony, Nina, Jerry, Lisa, James. 簡單來說就是將兩張資料表的欄位[EmpName]、[CustName]合併後直接輸出。


UNION

UNION 結果為 : Allen, James, Jerry, Lisa, Nina, Tony. UNION 剔除了兩張資料表欄位[EmpName]、[CustName]重複的資料,並且最終的資料已經被排序


由於 UNION 將會剔除重複的資料,可以理解為先將資料合併後再執行 DISTINCT 剔除重複資料,要達此目的就需先將資料進行排序。 因此採用 UNION 前需思考剔除重複資料是否為必要的條件,尤其是在處理大量資料時,將會造成 Memory、I/O 消耗的問題,若沒必要請使用 UNION ALL 即可 !

comments powered by Disqus