当前位置:酷酷问答>百科问答>MYSQL如何求两个表数据的交集

MYSQL如何求两个表数据的交集

2024-09-26 11:44:53 编辑:zane 浏览量:527

MYSQL如何求两个表数据的交集

的有关信息介绍如下:

MYSQL如何求两个表数据的交集

Oracle数据库中求交集可以使用INTERSECT关键字,但是MYSQL数据库却没有这个关键字,那么MYSQL又该怎么样实现交集(两个表共有的数据)呢?

如图所示是用到的两张表的结构和表里的初始数据,用作演示查询出交集的结果。

两个要求交集的表(列)的结构要一致,对应的字段数,字段类型都应该相同;将两个数据的数据列用 UNION ALL 关键字合并;将上面的所有需要比较的列 GROUP BY ;最后 HAVING COUNT(任意一列,不能多列)>1,那么就是交集。

SELECT a.* FROM( SELECT * from teacher UNION ALL SELECT * from student)a GROUP BY a.id,a.name,a.sex HAVING COUNT(a.sex)>1

内连接或者等值连接。jion(inner jion)。将两个数据列,条件必须涉及需要比较的列,这里没有比较sex列,所以比2步多了一行数据。

SELECT * FROM student AS a JOIN teacher AS b ON a.name =b.name AND a.ID=b.ID或者SELECT * FROM student AS a inner JOIN teacher AS b ON a.name =b.name AND a.ID=b.ID

带IN关键字的查询。需要比较多少列数据是相同的就必须有多少个IN。这个时候一定要控制列,列太多不建议用。

SELECT * FROM student AS a where a.name in (select name from teacher )AND a.ID in (select ID from teacher);

带EXISTS关键字的子查询。这个语句说白了也是通过判断teacher中是否有满足两个相等的条件,来得出来的。SELECT * FROM student AS a where EXISTS (select *from teacher b where a.name =b.name AND a.ID=b.ID)

总结一般就三种方法:合并查询,连接查询,子查询,实现的方式有很多,根据每个人思路可能有很多种写法,通过组合多种基本查询方法来达到求交集的效果

版权声明:文章由 酷酷问答 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.kukuwd.com/answer/52577.html
热门文章