Union和Union All到底有什麼區別

2021-09-02 05:15:05 字數 1822 閱讀 8357

以前一直不知道union和union all到底有什麼區別,今天來好好的研究一下,網上查到的結果是下面這個樣子,可是還是不是很理解,下面將自己親自驗證:

union:對兩個結果集進行並集操作,不包括重複行,同時進行預設規則的排序;

union all:對兩個結果集進行並集操作,包括重複行,不進行排序;

下面進行簡單的測試(因為是測試,所以sql**寫的很簡單,沒有什麼很嚴格的規範,只是為了理解這兩者之間的區別)

嚴格的標準寫法應該先判斷資料庫是否存在,表是否存在等等約束

第一步,建庫:

create database test  

go  

use test  

go

第二步,建表:

create table table1  

(      id int not null,  

name varchar(20) not null  

)    

create table table2  

(      id int not null,  

name varchar(20) not null  

)

第三步,插入測試資料:

insert into table1 values (1,'姚羽')  

insert into table1 values (2,'邊兵兵')  

insert into table1 values (3,'袁磊')  

insert into table2 values (1,'姚羽')  

insert into table2 values (2,'柳春平')  

insert into table2 values (3,'張永超')  

insert into table2 values (4,'劉華健')

第四步,測試開始:

select * from table1  

select * from table2

執行兩個表的查詢結果如下

可以很容易的看到,上面插入的測試資料當中,有一條是重複的

那麼我們  先看執行union 看看

select * from table1  

union   

select * from table2

再執行union  all 看看

select * from table1  

union all  

select * from table2

union用的比較多union all是直接連線,取到得是所有值,記錄可能有重複   union 是取唯一值,記錄沒有重複效率:

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

2、對排序的處理:union將會按照欄位的順序進行排序;union all只是簡單的將兩個結果合併後就返回。從效率上說,union all 要比union(需要去重和排序)快很多,所以,如果可以確認合併的兩個結果集中不包含重複資料且不需要排序時的話,那麼就使用union all。

簡要回答:union去重且排序

union all不去重不排序

UNION 和UNION ALL 的區別

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

UNION和UNION ALL的區別

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

UNION 和UNION ALL 的區別

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