基于SQL求集合的交、并、补
对数据库查询结果集求补(差)、交、并集,可利用SQL的EXCEPT(补集)、INTERSECT(交集)和UNION(并集)关键词,其中Mysql仅支持UNION,但可以利用SQL实现EXCEPT、INTERSECT的功能。
作者接下来将给出实验用表以及具体的SQL脚本语句。
实验用表
为进行实验,作者在SQL Server数据库下共建立了t1、t2两张表,两张表除主键id外均有个两字段stu_id和teacher_id。
t1表
id | stu_id | teacher_id |
---|---|---|
1 | S0001 | T01 |
2 | S0002 | T01 |
3 | S0003 | T02 |
4 | S0004 | T02 |
5 | S0005 | T03 |
6 | S0002 | T04 |
t2表
id | stu_id | teacher_id |
---|---|---|
1 | S0002 | T05 |
2 | S0003 | T03 |
3 | S0006 | T02 |
4 | S0007 | T04 |
5 | S0005 | T03 |
SQL脚本语句
/*求补(差)集demo1,一个字段*/
SELECT a.stu_id FROM t1 a
EXCEPT
SELECT a.stu_id FROM t2 a;
/*和上面等效,可用于Mysql*/
SELECT a.stu_id FROM t1 a
WHERE a.stu_id NOT IN
(SELECT a.stu_id FROM t2 a);/*求补(差)集demo2,多个字段求差集*/
SELECT a.stu_id,a.teacher_id FROM t1 a
WHERE a.stu_id NOT IN
(SELECT a.stu_id FROM t2 a)
AND a.teacher_id NOT IN
(SELECT a.teacher_id FROM t2 a);/*求交集demo1,多个字段求交集*/
SELECT a.stu_id,a.teacher_id FROM t1 a
INTERSECT
SELECT a.stu_id,a.teacher_id FROM t2 a;
/*和上面等效,可用于Mysql*/
SELECT a.stu_id,a.teacher_id FROM t1 a
WHERE a.stu_id+a.teacher_id IN
(SELECT a.stu_id+a.teacher_id FROM t2 a);/*求交集demo2*/
/*下面语句把交集中重复出现的去掉*/
SELECT a.stu_id FROM t1 a
INTERSECT
SELECT a.stu_id FROM t2 a;/*下面三个语句不会把重复的去掉,可使用DISTINCT去重*/
SELECT a.stu_id FROM t1 a
WHERE a.stu_id IN
(SELECT a.stu_id FROM t2 a);SELECT a.stu_id FROM t1 a,t2 b
WHERE a.stu_id=b.stu_id;SELECT a.stu_id FROM t1 a
WHERE EXISTS
(SELECT * FROM t2 b WHERE a.stu_id=b.stu_id);/*求并集demo*/
/*不会去重*/
SELECT a.stu_id FROM t1 a
UNION ALL
SELECT a.stu_id FROM t2 a;
/*去重,Mysql中可以在UNION后加DISTINCT*/
SELECT a.stu_id FROM t1 a
UNION
SELECT a.stu_id FROM t2 a;
基于SQL求集合的交、并、补相关推荐
- 线性表求集合的交与并
题目要求(类似的题型也可供参考) 已知A和B均是由整型数据组成的集合,使用线性表表示集合,设计算法求集合A.B的交集和并集,功能包括 输入集合A,输入集合B,求A和B的并集,求A和B的交集.本题中, ...
- SQL求并,交,差集
1.求并集 selecta.* from table_a as a union all selecta.* from table_b as b 使用 union或者union all,两个表的列数和列 ...
- 用java编程实现集合的交、并、差和补运算
一.实验目的 掌握集合的交.并.差和补运算,并且使用计算机编程实现. 二.实验内容 通过编程实现求给定集合A和B的并集C(C=A∪B).交集C(C=A∩B).差集C(C=A-B).补集~C=E-C的运 ...
- python中两个集合的运算并交补_三种方式实现 Python 中的集合的交、并、补运算...
文章目录 三种方式实现 Python 中的集合的交.并.补运算 一 背景 集合这个概念在我们高中阶段就有所了解,毕业已多年,我们一起回顾一下几个集合相关的基本概念吧? 集合是指具有某种特定性质的具体的 ...
- python交并补符号_三种方式实现 Python 中的集合的交、并、补运算-阿里云开发者社区...
三种方式实现 Python 中的集合的交.并.补运算 一 背景 集合这个概念在我们高中阶段就有所了解,毕业已多年,我们一起回顾一下几个集合相关的基本概念吧? 集合是指具有某种特定性质的具体的或抽象的对 ...
- (案例复盘)用抽象数据结构解决问题【集合的交、并、补】
抽象数据类型仅仅是一个概念名词吗?你会借助抽象数据结构解决问题吗? 0,抽象数据类型 我们在学习数据结构时,一般情况下对于 "抽象数据类型" 这个知识点完全没有放在心上,最多把他当 ...
- MADlib——基于SQL的数据挖掘解决方案(23)——分类之SVM
一.SVM简介 SVM法即支持向量机(Support Vector Machine,SVM)法,由Vapnik等人于1995年提出,具有相对优良的性能指标.该方法是建立在统计学理论基础上的机器学习方法 ...
- 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.2 使用窗口函数的解决方案简介...
本节书摘来自异步社区出版社<T-SQL性能调优秘笈--基于SQL Server 2012 窗口函数>一书中的第1章,第1.2节,作者: [美]Itzik Ben-Gan,更多章节内容可以访 ...
- python内置支持集合运算吗_Python中的集合支持交、并运算
Python中的集合支持交.并运算 答:√ 新冠肺炎患者潜伏期的传染性最强 答:对 在运动的组接中,镜头组接一个基本的原则是().(). 答:动接动 静接静 在中指背,距指甲根中点1分许称 答:老龙 ...
最新文章
- Pacemaker+Corosync PostgreSQL流复制HA的部署(pha4pgsql)
- 最常见的显示设置和快捷键
- java hasmoreelements_Java IOException.hasMoreElements方法代码示例
- pytest的fixture传参数
- 苹果Mac Finder 替代工具:Path Finder
- JavaScript的7个位运算符
- 小米图标大小设置方法_miui12如何设置图标大小
- 论文阅读:Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba
- 4.4.4系统不用ROOT激活xposed框架流程
- 计算机自检报错无法开机,BIOS维修网站www.biosrepair.com-开机自检BIOS错误代码解析...
- JAVA计算机毕业设计政府会议管理系统Mybatis+系统+数据库+调试部署
- 与10.110.12.29mask255.255.255.224属于同一网段的主机ip地址是
- 铁甲小宝像车轮的是什么机器人_铁甲小宝里所有机器人的名字和绝招
- guid主分区表损坏如何处理_什么是GPT或GUID分区表
- WebApp最佳实践用户体验篇之如何针对多种屏幕尺寸设计合理的移动应用
- 探究文件上传安全:upload-labs靶场的绕过技巧
- 计算机毕业设计 SSM车辆挂牌管理系统 电动车实名挂牌管理系统 车辆挂牌办理系统Java Vue MySQL数据库 远程调试 代码讲解
- 如何让自己的收入翻了十倍
- Node:(番外篇) 如何使用Nodejs向指定邮箱发送邮件
- 高防IP的特点跟高防CDN的优势