SQL中Union,Intersect,Except的區別



一、SQL中Union、Intersect、Except的含義


1、Except返回兩個結果集的差(即從左查詢中返回右查詢沒有找到的所有非重複值)。

2、Intersect返回 兩個結果集的交集(即兩個查詢都返回的所有非重複值)。

3、union返回兩個結果集的並集。


 

二、限制條件


(1)所有查詢中的列數和列的順序必須相同。

(2)比較的兩個查詢結果集中的列數據類型可以不同但必須兼容。

(3)比較的兩個查詢結果集中不能包含不可比較的數據類型(xml、text、ntext、image 或非二進制 CLR 用戶定義類型)的列。

(4)返回的結果集的列名與操作數左側的查詢返回的列名相同。ORDER BY 子句中的列名或別名必須引用左側查詢返回的列名。

(5)不能與 COMPUTE 和 COMPUTE BY 子句一起使用。

(6)通過比較行來確定非重複值時,兩個 NULL 值被視爲相等。(EXCEPT 或 INTERSECT 返回的結果集中的任何列的爲空性與操作數左側的查詢返回的對應列的爲空性相同)



三、SQL中Union、Intersect、Except實例


create table t1(id int,mark char(2))
go
create table t2(id int,mark char(2))
go
insert into t1
    select 1,'t1' union all
    select 2,'t2' union all
    select 3,'t3' union all
    select 4,'t4'
go
insert into t2
    select 2,'t2' union all
    select 3,'m3' union all
    select 5,'m5' union all
    select 6,'t6'
go
select * from t1
EXCEPT
select * from t2
go
select * from t1
INTERSECT
select * from t2
go

--EXCEPT結果集爲
--1    t1
--3    t3
--4    t4

--INTERSECT結果集爲
--2    t2



參考資料:   SQL中Union,Intersect,Except   http://www.studyofnet.com/news/734.html


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