您的位置:首页 > 数据库

sql中exists,Intersect ,union 与union All的用法

2016-01-23 11:17 567 查看
熟练使用SQL Server中的各种用法会给查询带来很多方便。今天就介绍一下EXCEPT和INTERSECT。注意此语法仅在SQL Server 2005及以上版本支持。

EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据。

就是两个集中不重复的部分。例如
SELECT * FROM
A
EXCEPT
SELECT * FROM B
这个的意思是,凡是不出现在B表中的A表的行

INTERSECT是指在两个集合中都存在的数据。

就是两个集中共同的部分。例如
SELECT * FROM
A
INTERSECT
SELECT * FROM B
这个的意思是,同时出现在A和B中的记录

测试如下:

[c-sharp] view plain copy

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



union 与union All的区别

--并集UNION
--UNION与UNION ALL的区别是: union会删除重复值,也就是说A和B中重复的行,最终只会出现一次,而union all则会保留重复行。
SELECT * FROM t1
UNION
SELECT * FROM t2

SELECT * FROM t1
UNION all
SELECT * FROM t2

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: