集合运算—union(并集)、intersect(交集)和except(差集)
一、集合运算的基本格式是:
集合查询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(差集)相关推荐
- 集合运算(并集、交集、余集)
问题描述 给出两个整数集合A.B,求出他们的交集.并集以及B在A中的余集. 输入格式 第一行为一个整数n,表示集合A中的元素个数. 第二行有n个互不相同的用空格隔开的整数,表示集合A中的元素. 第三行 ...
- 6.14 PowerBI系列之DAX函数专题-重点之集合函数UNION、INTERSECT、 except、crossjoin、generate
集合函数 表1 表2 union 并集 = union('表1',表2'') intersect 交集=intersect('表1','表2') --(图1) 图1 except 差集 = excep ...
- 12 - 集合之间的并集与交集
1. 如何向集合中添加和删除元素 x = {3, 2, 1} x.add(123) print(x)# 添加重复元素,自动屏蔽 x.add(1) print(x)x.add('abc') print( ...
- Oracle学习XII —— Oracle集合运算
Oracle集合运算 Oracle集合运算就是把多个查询结果组合成一个查询结果,oralce的集合运算包括:INTERSECT(交集).UINION ALL(交集重复).UINION(交集不重复).M ...
- mysql集合运算教程_详解SQL集合运算
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]06.透视.逆透视.分组集 [T ...
- oracle union all写法,【oracle】-集合运算:UNION,UNION ALL...
在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:求并,重复记录只显示一次. UNION ALL:求并集,显示所有记录信息. INT ...
- 【学亮IT手记】oracle集合运算
[学亮IT手记] oracle集合运算 union做并集运算: ①union集合运算的结果不包括去掉重复记录. ②union all集合运算的结果包括重复记录. intersect进行交集运算 min ...
- MySQL的集合运算
文章目录 集合运算 1.表的加减法 1.1 什么是集合运算 2.表的加法--union 2.1 UNION 2.2 UNION 和 OR 谓词 2.3 包含重复行的集合运算 UNION ALL 2.4 ...
- SQL学习笔记——task4:集合运算与内连结
文章目录 1. 表的加减法 1.1 什么是表集合运算 1.2 表的加法--UNION 1.3 MYSQL 8.0 不支持交运算INTERSECT 1.4 差集,补集与表的减法 1.5 对称差 2. 连 ...
最新文章
- C#判断文件及文件夹是否存在并创建
- 6.2 常见多媒体标准及压缩技术
- 微服务 松耦合_超值干货:微服务架构下如何解耦,对于已经紧耦合下如何重构?...
- centos 卸载vsftp
- umijs 修改默认配置_UmiJS基础教程(2) 目录结构
- mysql 修改数据库密码
- 犀牛插件开发-插件兼容性-Rhino插件-什么是Rhino插件
- 广数系统加工中心编程_图解数控铣及加工中心加工工艺与编程——(FANUC系统)/(SIEMENS系统)...
- linux 设置注释颜色,【转】vim注释和光标高亮行列的颜色设置
- ureport 显示html,UReport2 与业务结合
- python如何安装spyder?
- android中检测网速,Android 流量与网速监测(悬浮窗) 源码
- 玻色量子CEO文凯受邀出席首经贸金融学院系列讲座
- Vim中如何全选并复制?
- 协作机器人市场现在状况如何?——探讨关于UR机器人的发展前景
- PHP7常用新特性介绍
- ETC通行费9折活动
- 职业“小三劝退师”,真的能拯救你的婚姻吗?
- python小问题:依赖包/conda-forge/conda无法安装包/librosa/
- C语言程序设计 飞行小鸟游戏
热门文章
- Python基础算法:排序、查找、二叉树
- 高中计算机矩阵算法ppt,矩阵及其基本算法.ppt
- TLV文档阅读笔记-What is TLV及protobuf
- Execl复制公式结果一样-解决方法
- python b站日排行榜_B站2020年每周必看热门视频数据盘点!Python数据分析
- ibm tivoli_在没有用户注册表的情况下使用Tivoli Access Manager for eBusiness WebSEAL
- oracle 19c使用dgmgrl来执行switchover和failover切换
- socket发送文件夹
- 国内外人参的功效和作用看法不同,究竟听谁的?
- 2048 控制台版(c实现)