union:對兩個結果集進行並集操作,不包括重復行,同時進行默認規則的排序;
union All:對兩個結果集進行並集操作,包括重復行,不進行排序;
下面進行簡單的測試(因為是測試,所以sql代碼寫的很簡單,沒有什么很嚴格的規范,只是為了理解這兩者之間的區別)
嚴格的標准寫法應該先判斷數據庫是否存在,表是否存在等等約束
Create database Test; #建庫
use Test; #選擇庫
#創建表
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 看看:
重復的記錄"姚羽"顯示兩條,沒有去重。