对数据库查询结果集求补(差)、交、并集,可利用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求集合的交、并、补相关推荐

  1. 线性表求集合的交与并

    题目要求(类似的题型也可供参考) 已知A和B均是由整型数据组成的集合,使用线性表表示集合,设计算法求集合A.B的交集和并集,功能包括 输入集合A,输入集合B,求A和B的并集,求A和B的交集.本题中, ...

  2. SQL求并,交,差集

    1.求并集 selecta.* from table_a as a union all selecta.* from table_b as b 使用 union或者union all,两个表的列数和列 ...

  3. 用java编程实现集合的交、并、差和补运算

    一.实验目的 掌握集合的交.并.差和补运算,并且使用计算机编程实现. 二.实验内容 通过编程实现求给定集合A和B的并集C(C=A∪B).交集C(C=A∩B).差集C(C=A-B).补集~C=E-C的运 ...

  4. python中两个集合的运算并交补_三种方式实现 Python 中的集合的交、并、补运算...

    文章目录 三种方式实现 Python 中的集合的交.并.补运算 一 背景 集合这个概念在我们高中阶段就有所了解,毕业已多年,我们一起回顾一下几个集合相关的基本概念吧? 集合是指具有某种特定性质的具体的 ...

  5. python交并补符号_三种方式实现 Python 中的集合的交、并、补运算-阿里云开发者社区...

    三种方式实现 Python 中的集合的交.并.补运算 一 背景 集合这个概念在我们高中阶段就有所了解,毕业已多年,我们一起回顾一下几个集合相关的基本概念吧? 集合是指具有某种特定性质的具体的或抽象的对 ...

  6. (案例复盘)用抽象数据结构解决问题【集合的交、并、补】

    抽象数据类型仅仅是一个概念名词吗?你会借助抽象数据结构解决问题吗? 0,抽象数据类型 我们在学习数据结构时,一般情况下对于 "抽象数据类型" 这个知识点完全没有放在心上,最多把他当 ...

  7. MADlib——基于SQL的数据挖掘解决方案(23)——分类之SVM

    一.SVM简介 SVM法即支持向量机(Support Vector Machine,SVM)法,由Vapnik等人于1995年提出,具有相对优良的性能指标.该方法是建立在统计学理论基础上的机器学习方法 ...

  8. 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.2 使用窗口函数的解决方案简介...

    本节书摘来自异步社区出版社<T-SQL性能调优秘笈--基于SQL Server 2012 窗口函数>一书中的第1章,第1.2节,作者: [美]Itzik Ben-Gan,更多章节内容可以访 ...

  9. python内置支持集合运算吗_Python中的集合支持交、并运算

    Python中的集合支持交.并运算 答:√ 新冠肺炎患者潜伏期的传染性最强 答:对 在运动的组接中,镜头组接一个基本的原则是().(). 答:动接动 静接静 在中指背,距指甲根中点1分许称 答:老龙 ...

最新文章

  1. Pacemaker+Corosync PostgreSQL流复制HA的部署(pha4pgsql)
  2. 最常见的显示设置和快捷键
  3. java hasmoreelements_Java IOException.hasMoreElements方法代码示例
  4. pytest的fixture传参数
  5. 苹果Mac Finder 替代工具:Path Finder
  6. JavaScript的7个位运算符
  7. 小米图标大小设置方法_miui12如何设置图标大小
  8. 论文阅读:Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba
  9. 4.4.4系统不用ROOT激活xposed框架流程
  10. 计算机自检报错无法开机,BIOS维修网站www.biosrepair.com-开机自检BIOS错误代码解析...
  11. JAVA计算机毕业设计政府会议管理系统Mybatis+系统+数据库+调试部署
  12. 与10.110.12.29mask255.255.255.224属于同一网段的主机ip地址是
  13. 铁甲小宝像车轮的是什么机器人_铁甲小宝里所有机器人的名字和绝招
  14. guid主分区表损坏如何处理_什么是GPT或GUID分区表
  15. WebApp最佳实践用户体验篇之如何针对多种屏幕尺寸设计合理的移动应用
  16. 探究文件上传安全:upload-labs靶场的绕过技巧
  17. 计算机毕业设计 SSM车辆挂牌管理系统 电动车实名挂牌管理系统 车辆挂牌办理系统Java Vue MySQL数据库 远程调试 代码讲解
  18. 如何让自己的收入翻了十倍
  19. Node:(番外篇) 如何使用Nodejs向指定邮箱发送邮件
  20. 高防IP的特点跟高防CDN的优势

热门文章

  1. 从.weights中提取权重数据
  2. html中实现简单计算器功能,js实现简易计算器功能
  3. Spark2.1.0 + CarbonData1.0.0集群模式部署及使用入门
  4. Alpha版本冲刺(二)
  5. 电网数字化转型经验分享
  6. 美国某超市销售数据分析
  7. 美国医院权威评估体系
  8. MPEG PS流格式
  9. 用友公司来访,一些关于用友最新旗舰产品U9的一些介绍(图文)
  10. window 下蓝牙开发