MSSQL 数据表集合运算方法分享


下文将讲述,数据表之间的合并,求差集 求交集

先建立两张表,如下所示:

 create table testA(keyIdA int ,infoA varchar(20),otherA varchar(30))
create table testB(keyIdB int ,infoB varchar(20),otherB varchar(30))
go
insert into testA values(1,'test1','10'),(2,'test2','20'),
(3,'test3','30'),(4,'test4','40'),(5,'test5','50'),(6,'test6','60')
go
insert into testB values(1,'test1','20'),(2,'test2','20'),
(3,'test3','30'),(4,'test4','40'),(5,'test5','80'),(6,'test6','60')


union 关键字交集生成

union 关键字注意事项:
1 union 连接的两个对象需具有相同的结构、列数需相等、相互之间数据类型要么一致、要么可以互相兼容
2 union 所连接的对象 不能使用order by 或 计算列
3 union 生成新的集合,会剔除重复行

例:

select * from testA 
union
select * from testB



union all 关键字交集生成

union all同union关键字具有相同的功能,主要区别在于,对象数据组合的方式不同,union all 不会剔除重复的行数据,如下所示:

select * from testA 
union all 
select * from testB



Except 关键字 差集生成

Except功能:对两个或两个以上集合,进行差集计算,
返回左边集合中存在的元素,并且不存在右边集合的元素
Except 关键字注意事项:
1 Except 连接的两个对象需具有相同的结构、列数需相等、相互之间数据类型要么一致、要么可以互相兼容
2 Except 所连接的对象 不能使用order by 或 计算列
例:

select * from testA
Except
select * from testB


返回在testA对象中,但是不在testB对象中的信息,如下图所示



InterSect 关键字 交集生成

InterSect:对两个或两个以上集合,进行交集计算,
返回左边集合中存在的元素,并且也存在右边集合的元素
InterSect 关键字注意事项:
1 InterSect 连接的两个对象需具有相同的结构、列数需相等、相互之间数据类型要么一致、要么可以互相兼容
2 InterSect 所连接的对象 不能使用order by 或 计算列
例:

select * from testA
InterSect
select * from testB


返回在testA对象中,也在testB对象中的信息,如下图所示