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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值