mysql 如何获取两个集合的交集/差集/并集


Posted in MySQL onJune 08, 2021

mysql的常见场景,获取两个数据集的交集和差集

步骤

1、两个集合的结构要一致,对应的字段数,字段类型

2、将两个集合用 UNION ALL 关键字合并,这里的结果是有重复的所有集

3、将上面的所有集 GROUP BY id

4、最后 HAVING COUNT(id)=1,等于1的意思是只出现了一次,所以这个是差集,如果等于2,那么就是交集

代码演示

差集

下面的sql有明显的问题,不过这个只是一个示意,

从一个表中查询不需要用到交集和差集,条件可以合并在一起直接查询出来的.能明白意思就好

下面的sql的意思是找到所有非技术部的员工的id,code和name

SELECT a.* FROM(
    SELECT id,code,name FROM test_emp
    UNION ALL
    SELECT id,code,name FROM test_emp WHERE dept='JSB'
)a GROUP BY a.id HAVING COUNT(a.id)=1

交集

下面的sql的意思是找到所有技术部年龄大于25的员工

SELECT a.* FROM(
    SELECT id,code,name FROM test_emp WHERE age>25
    UNION ALL
    SELECT id,code,name FROM test_emp WHERE dept='JSB'
)a GROUP BY a.id HAVING COUNT(a.id)=2

并集

下面的sql的意思是找到所有技术部的员工和年龄大于30的员工

union可以自动去除重复的内容,得到不重复的结果集

SELECT a.* FROM(
    SELECT id,code,name FROM test_emp WHERE age>25
    UNION
    SELECT id,code,name FROM test_emp WHERE dept='JSB'
)a

mysql中交集,并集,差集,左连接,右连接

学习mysql也有一个月啦,在这个月中,都是按照需求对数据表进行一些基本操作,在这个过程当中,经常使用到左连接,右连接,交集,取差集等,现在对其基本操作进行归纳总结。

数据源:

表一:

id name sex age

1 mike1男 34
1 mike2 男 23
1 mike3 女 24
2 mike1 男 46
2 mike2 男 35
2 mike3 男 42
2 mike4 男 62
3 mike1 女 45
4 mike5 男 72
5 mike4 女 23

表二:

id school

1 北京大学

2 清华大学

3 哈佛大学

7 MIT

左连接:

根据某个等值条件,对表进行连接。本实验是在id相同的情况下进行左连接

code:

select a.*,b.school 
FROM 
(SELECT * FROM mike1.test001) a
LEFT JOIN
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id

结果如下:以表1为根基,对表2进行连接,匹配相同的id号

mysql 如何获取两个集合的交集/差集/并集

右连接:

以表2为根基,通过id相同的字段对其进行右连接。

code:

select a.*,b.school 
FROM 
(SELECT * FROM mike1.test001) a
right JOIN
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id

结果:

mysql 如何获取两个集合的交集/差集/并集

你们觉得结果是有问题还是没有问题呢?

交集:

通过id号相同,对表1和表2进行内连接,取相同的部分,不相同的部分省略掉。

code:

select a.*,b.school 
FROM 
(SELECT * FROM mike1.test001) a
inner JOIN
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id

结果:

mysql 如何获取两个集合的交集/差集/并集

差集:

差集用的还是比较多的,类似于我们数学中学的,交、合、并等集合的操作。

code1:取表2与表1相同的部分,是我们上面取交集的第二种方法。

select a.id,a.name,a.sex,a.age,b.school 
FROM 
(SELECT * FROM mike1.test001) a
LEFT OUTER join
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id
WHERE b.id IS NOT null

结果:

mysql 如何获取两个集合的交集/差集/并集

code2:取表1中的id在表2中的id的差值,最后列出数据。

select a.id,a.name,a.sex,a.age,b.school 
FROM 
(SELECT * FROM mike1.test001) a
LEFT OUTER join
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id
WHERE b.id IS  null

结果:

mysql 如何获取两个集合的交集/差集/并集

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

MySQL 相关文章推荐
MySQL之高可用集群部署及故障切换实现
Apr 22 MySQL
mysql 8.0.24 安装配置方法图文教程
May 12 MySQL
MySQL如何构建数据表索引
May 13 MySQL
Mysql数据库命令大全
May 26 MySQL
带你学习MySQL执行计划
May 31 MySQL
MySQL开启事务的方式
Jun 26 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
MySQL悲观锁与乐观锁的实现方案
Nov 02 MySQL
SQL基础的查询语句
Nov 11 MySQL
将MySQL的表数据全量导入clichhouse库中
Mar 21 MySQL
MySql统计函数COUNT的具体使用详解
Aug 14 MySQL
MySQL索引失效十种场景与优化方案
May 08 MySQL
Mysql 如何查询时间段交集
Jun 08 #MySQL
mysql中between的边界,范围说明
Jun 08 #MySQL
MySQL 百万级数据的4种查询优化方式
MySQL 全文检索的使用示例
Jun 07 #MySQL
MySQL 常见的数据表设计误区汇总
Jun 07 #MySQL
浅谈MySQL next-key lock 加锁范围
MySQL为id选择合适的数据类型
You might like
用PHP实现WEB动态网页静态
2006/10/09 PHP
删除数组元素实用的PHP数组函数
2008/08/18 PHP
关于页面优化和伪静态
2009/10/11 PHP
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
php.ini 配置文件的深入解析
2013/06/17 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
JS 实现图片直接下载示例代码
2013/07/22 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python装饰器基础详解
2016/03/09 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
python实现排序算法解析
2018/09/08 Python
django页面跳转问题及注意事项
2019/07/18 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
函授毕业生自我鉴定
2013/11/06 职场文书
自我鉴定四大框架
2014/01/17 职场文书
小学生元旦感言
2014/02/26 职场文书
个人担保书范文
2014/05/20 职场文书
母亲节演讲稿
2014/05/27 职场文书
统计工作个人总结
2015/03/03 职场文书
演讲开场白和结束语
2015/05/29 职场文书
导游词之无锡古运河
2019/11/14 职场文书
Python学习之时间包使用教程详解
2022/03/21 Python