Sql Server中集合的操作(并集、差集、交集)学习
首先我们做一下测试数据
1、创建测试数据
--创建人员表1-- create table Person1 ( Uid int identity(1,1) primary key, Name varchar(20) not null ) --创建人员表2-- create table Person2 ( Uid int identity(1,1) primary key, Name varchar(20) not null ) --插入数据-- insert into Person1 values('曹操'),('郭嘉'),('典韦'),('孙权'),('周瑜') insert into Person2 values('刘备'),('关羽'),('张飞'),('孙权'),('周瑜') --查询数据-- select * from Person1 select * from Person2
2、测试数据查询结果如下
1)表1和表2的数据
3、集合中的并集、差集和交集
3.1、并集(union)
1)并集的定义
Union可以对两个或多个结果集进行连接,形成“并集”。子结果集所有的记录组合在一起形成新的结果集。
2)限制条件
2.1)子结果集要具有相同的结构。
2.2)字结果集的列数必须相同。
2.3)子结果集对应的数据类型必须可以兼容。
2.4)每个子结果集不能包含order by和compute子句
3) 并集的使用
--1、并集 union -- --1)去掉重复项的并集-- select Name from Person1 union select Name from Person2 --2)不去掉重复项的并集-- select Name from Person1 union all select Name from Person2
4)查询的结果
3.2、差集(except)
1)差集的定义
Except可以对两个或多个结果集进行连接,形成“差集”。返回左边结果集合中已经有的记录,而右边结果集中没有的记录。
2) 限制条件
2.1)子结果集要具有相同的结构。
2.2)子结果集的列数必须相同
2.3)子结果集对应的数据类型必须可以兼容。
2.4)每个子结果集不能包含order by 和 compute子句。
3)差集的使用
--Except 差集--- select Name from Person1 except select Name from Person2
4)查询的结果
3.3 、交集(InterSect)
1)交集的定义
InterSect可以对两个或多个结果集进行连接,形成“交集”。返回左边结果集和右边结果集中都有的记录
2)限制条件
2.1)子结果集要具有相同的结构。
2.2)子结果集的列数必须相同
2.3)子结果集对应的数据类型必须可以兼容。
2.4)每个子结果集不能包含order by 和 compute子句。
3)交集的使用
--InterSect 交集-- select * from Person1 InterSect select * from Person2
4)查询的结果
参考网址:
http://www.cnblogs.com/kissdodog/archive/2013/06/24/3152743.html
平时多记记,到用时才能看看,记录你的进步,分享你的成果