加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql怎样查两个表的交集

发布时间:2022-02-24 20:43:43 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要介绍了mysql如何查两个表的交集,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。 mysql查询两个表的交集方法:1、将两个数据的数据列用UNION ALL关键字合并查询交集;2、使用
      这篇文章主要介绍了mysql如何查两个表的交集,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
 
      mysql查询两个表的交集方法:1、将两个数据的数据列用UNION ALL关键字合并查询交集;2、使用带IN关键字的查询;3、使用带EXISTS关键字的子查询。
 
1、两个要求交集的表(列)的结构要一致,对应的字段数,字段类型都应该相同;将两个数据的数据列用 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
 
2、内连接或者等值连接。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
 
3、带IN关键字的查询。需要比较多少列数据是相同的就必须有多少个IN。这个时候一定要控制列,列太多不建议用。
 
SELECT * FROM student AS a where a.name in (select name from teacher )AND a.ID in (select ID from teacher);
 
4、带EXISTS关键字的子查询。这个语句说白了也是通过判断teacher中是否有满足两个相等的条件,来得出来的。
 
SELECT * FROM student AS a where EXISTS (select *from teacher b where a.name =b.name AND a.ID=b.ID)
 
      感谢你能够认真阅读完这篇文章,希望小编分享mysql如何查两个表的交集内容对大家有帮助。

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!