Union 和 union all 的區別

在數據庫中,Union    Union all 都是將兩個結果集並起來,並且他們的數據列數據必須是同類型的。但是它們的使用和效率上是有不同的。Union在進行錶鏈接的時候會進行篩選重複的記錄,在錶鏈接後,會對產生的結果集進行排序運算,刪除重複的記錄再返回記錄:

Select * from emp_Y

Union

Select * from emp_A;

返回的結果集是不會有重複數據記錄的。

Union all只是簡單的兩個結果集合並就返回了,如果兩個結果集中有相同的數據,我們會發現在返回的結果集中有重複的數據:

Select * from emp_Y

Union

Select * from emp_A;

 

因爲union all 不需要篩選刪除重複的數據記錄,所以,它的效率要遠高於union。如果可以確定需要合併的兩個結果集中沒有重複的數據記錄,那麼就使用Union all,會快得多。

下面,我們看看這樣一個sql語句:

Select  name,id  from emp_A order by id

Union

Select name,id  from emp_Y order by id

執行,我們會發現報錯了,Union本身會對返回的結果集按照select 後的第一個字段進行排序,如果想要按照自己定義的字段進行排序,就不能像上面那樣寫,需要寫成如下的形式:

select  name,id from emp_A

Union

Select name,id from emp_Y order by id

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章