Union 和 union all 的區別

2021-06-06 04:19:53 字數 792 閱讀 4798

在資料庫中,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 在進行表鏈結後會篩選掉重複的記錄,所以在表鏈結後會對所產生的結果集進行排序運算,刪除重複的記錄再返回結果。實際大部分應用中是不會產生重複的記錄,最常見的是過程表與歷史表 ...