一、集合运算的基本格式是:

集合查询1

<集合运算>

集合查询2

[order by ...]

二、集合运算符是对两个集合操作的,两个集合必须具有相同的列数,列具有相同的数据类型(至少能隐式转换的),最终输出的集合的列名由第一个集合的列名来确定。(可以用来连接多个结果);集合运算对行进行比较时,认为两个NULL值相等。

三、union和union all(并集)集合运算

union(并集)集合运算可以将多个查询结果集合并成一个结果集。union(隐含distinct,去除重复)、union all。

--UNION合并两个查询结果集,并且将其中完全重复的数据行合并为一条
select tName,tSex from teacher
union
select sName,sSex from student
--UNION ALL合并两个查询结果集,返回所有数据,不会去掉重复的数据
select tName,tSex from teacher
union all
select sName,sSex from student

Union因为要进行重复值扫描,所以效率低,因此如果不是确定要合并重复行,那么就用UNION ALL

四、intersect(交集)集合运算:删除两个集合中的重复行,返回只有在两个集合中都出现的行

--先将其中完全重复的数据行删除,再对两个查询结果集取其交集
select tName,tSex from teacher
intersect
select sName,sSex from student

ANSI SQL 支持带有all选项的intersect集合运算,但SQL Server 2008现在还不支持all选项。要想查询交集中的所有数据的办法:

with intersect_all as
(select row_number() over(partition by tName,tSex order by (select 0)) as rowNum,tName,tSex from teacherintersectselect row_number() over(partition by sName,sSex order by (select 0)) as rowNum,sName,sSex from student
)
select tName,tSex from intersect_all--备注:在排序函数的over子句中使用order by (select <常量>)用这种方法可以告诉SQL Server不必在意行的顺序

五、except(差集)集合运算:先将其中完全重复的数据行删除,再返回只在第一个集合中出现,在第二个集合中不出现的所有行。

select tName,tSex from teacher
except
select sName,sSex from student

ANSI SQL 支持带有all选项的except集合运算,但SQL Server 2008现在还不支持all选项。要想查询交集中的所有数据的办法:

with except_all as
(select row_number() over(partition by tName,tSex order by (select 0)) as rowNum,tName,tSex from teacherexceptselect row_number() over(partition by sName,sSex order by (select 0)) as rowNum,sName,sSex from student
)
select tName,tSex from except_all--备注:在排序函数的over子句中使用order by (select <常量>)用这种方法可以告诉SQL Server不必在意行的顺序

六、集合运算的优先级:intersect运算比union和except运算的优先级高,而union和except的优先级相等

集合运算—union(并集)、intersect(交集)和except(差集)相关推荐

  1. 集合运算(并集、交集、余集)

    问题描述 给出两个整数集合A.B,求出他们的交集.并集以及B在A中的余集. 输入格式 第一行为一个整数n,表示集合A中的元素个数. 第二行有n个互不相同的用空格隔开的整数,表示集合A中的元素. 第三行 ...

  2. 6.14 PowerBI系列之DAX函数专题-重点之集合函数UNION、INTERSECT、 except、crossjoin、generate

    集合函数 表1 表2 union 并集 = union('表1',表2'') intersect 交集=intersect('表1','表2') --(图1) 图1 except 差集 = excep ...

  3. 12 - 集合之间的并集与交集

    1. 如何向集合中添加和删除元素 x = {3, 2, 1} x.add(123) print(x)# 添加重复元素,自动屏蔽 x.add(1) print(x)x.add('abc') print( ...

  4. Oracle学习XII —— Oracle集合运算

    Oracle集合运算 Oracle集合运算就是把多个查询结果组合成一个查询结果,oralce的集合运算包括:INTERSECT(交集).UINION ALL(交集重复).UINION(交集不重复).M ...

  5. mysql集合运算教程_详解SQL集合运算

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]06.透视.逆透视.分组集 [T ...

  6. oracle union all写法,【oracle】-集合运算:UNION,UNION ALL...

    在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:求并,重复记录只显示一次. UNION ALL:求并集,显示所有记录信息. INT ...

  7. 【学亮IT手记】oracle集合运算

    [学亮IT手记] oracle集合运算 union做并集运算: ①union集合运算的结果不包括去掉重复记录. ②union all集合运算的结果包括重复记录. intersect进行交集运算 min ...

  8. MySQL的集合运算

    文章目录 集合运算 1.表的加减法 1.1 什么是集合运算 2.表的加法--union 2.1 UNION 2.2 UNION 和 OR 谓词 2.3 包含重复行的集合运算 UNION ALL 2.4 ...

  9. SQL学习笔记——task4:集合运算与内连结

    文章目录 1. 表的加减法 1.1 什么是表集合运算 1.2 表的加法--UNION 1.3 MYSQL 8.0 不支持交运算INTERSECT 1.4 差集,补集与表的减法 1.5 对称差 2. 连 ...

最新文章

  1. C#判断文件及文件夹是否存在并创建
  2. 6.2 常见多媒体标准及压缩技术
  3. 微服务 松耦合_超值干货:微服务架构下如何解耦,对于已经紧耦合下如何重构?...
  4. centos 卸载vsftp
  5. umijs 修改默认配置_UmiJS基础教程(2) 目录结构
  6. mysql 修改数据库密码
  7. 犀牛插件开发-插件兼容性-Rhino插件-什么是Rhino插件
  8. 广数系统加工中心编程_图解数控铣及加工中心加工工艺与编程——(FANUC系统)/(SIEMENS系统)...
  9. linux 设置注释颜色,【转】vim注释和光标高亮行列的颜色设置
  10. ureport 显示html,UReport2 与业务结合
  11. python如何安装spyder?
  12. android中检测网速,Android 流量与网速监测(悬浮窗) 源码
  13. 玻色量子CEO文凯受邀出席首经贸金融学院系列讲座
  14. Vim中如何全选并复制?
  15. 协作机器人市场现在状况如何?——探讨关于UR机器人的发展前景
  16. PHP7常用新特性介绍
  17. ETC通行费9折活动
  18. 职业“小三劝退师”,真的能拯救你的婚姻吗?
  19. python小问题:依赖包/conda-forge/conda无法安装包/librosa/
  20. C语言程序设计 飞行小鸟游戏

热门文章

  1. Python基础算法:排序、查找、二叉树
  2. 高中计算机矩阵算法ppt,矩阵及其基本算法.ppt
  3. TLV文档阅读笔记-What is TLV及protobuf
  4. Execl复制公式结果一样-解决方法
  5. python b站日排行榜_B站2020年每周必看热门视频数据盘点!Python数据分析
  6. ibm tivoli_在没有用户注册表的情况下使用Tivoli Access Manager for eBusiness WebSEAL
  7. oracle 19c使用dgmgrl来执行switchover和failover切换
  8. socket发送文件夹
  9. 国内外人参的功效和作用看法不同,究竟听谁的?
  10. 2048 控制台版(c实现)