在資料庫中,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
UNION 和UNION ALL 的區別
在資料庫中,union 和union all 關鍵字都是將兩個結果集合並為乙個,但這兩者從使用和效率上來說都有所不同。union 在進行表鏈結後會篩選掉重複的記錄,所以在表鏈結後會對所產生的結果集進行排序運算,刪除重複的記錄再返回結果。實際大部分應用中是不會產生重複的記錄,最常見的是過程表與歷史表 ...
UNION和UNION ALL的區別
關鍵字 union 和union all 的區別 出處 在資料庫中,union和union all關鍵字都是將兩個結果集合並為乙個,但這兩者從使用和效率上來說都有所不同。union在進行表鏈結後會篩選掉重複的記錄,所以在表鏈結後會對所產生的結果集進行排序運算,刪除重複的記錄再返回結果。實際大部分應用...
UNION 和UNION ALL 的區別
在資料庫中,union 和union all 關鍵字都是將兩個結果集合並為乙個,但這兩者從使用和效率上來說都有所不同。union 在進行表鏈結後會篩選掉重複的記錄,所以在表鏈結後會對所產生的結果集進行排序運算,刪除重複的記錄再返回結果。實際大部分應用中是不會產生重複的記錄,最常見的是過程表與歷史表 ...