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 05 MySQL
将图片保存到mysql数据库并展示在前端页面的实现代码
May 02 MySQL
MySQL单表千万级数据处理的思路分享
Jun 05 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 MySQL
mysql定时自动备份数据库的方法步骤
Jul 07 MySQL
SQL IDENTITY_INSERT作用案例详解
Aug 23 MySQL
MySQL基于索引的压力测试的实现
Nov 07 MySQL
一文弄懂MySQL中redo log与binlog的区别
Feb 15 MySQL
Mysql分析设计表主键为何不用uuid
Mar 31 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
Jun 28 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 静态变量的初始化
2009/11/15 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP 实现缩略图
2021/03/09 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
jquery中radio checked问题
2015/03/16 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
python文件操作相关知识点总结整理
2016/02/22 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
使用Tkinter制作信息提示框
2020/02/18 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
美德好少年事迹材料
2014/01/19 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
教你用python实现一个无界面的小型图书管理系统
2021/05/21 Python