本文整理自网络,侵删。
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相同的情况下进行左连接
相关阅读 >>
浅析mysql-server 与 mysql-client 的区别
更多相关阅读请进入《mysql》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。