Erlo

mysql怎么查两个表的交集

时间:2020-10-19   阅读:993次   来源:php中文网
页面报错
点赞
原文:https://www.php.cn/mysql-tutorials-461411.html

mysql查询两个表的交集方法:1、将两个数据的数据列用UNION ALL关键字合并查询交集;2、使用带IN关键字的查询;3、使用带EXISTS关键字的子查询。

mysql查询两个表的交集方法:

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

01f80a57ceafcaa9c47930eb0804d5e.png

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

03fe92f3957024cd290504a444c247d.png

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

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

3b100e6afd219f1e1382448f8ded81b.png

4、带EXISTS关键字的子查询。这个语句说白了也是通过判断teacher中是否有满足两个相等的条件,来得出来的。

SELECT * FROM student AS a where EXISTS (select *from teacher b where a.name =b.name AND a.ID=b.ID)

d0d6e150607a6b7cb09223b168618c4.png

更多相关免费学习推荐:mysql教程(视频)

相关推荐

提交留言

评论留言

还没有评论留言,赶紧来抢楼吧~~

吐槽小黑屋()

* 这里是“吐槽小黑屋”,所有人可看,只保留当天信息。

  • Erlo吐槽

    Erlo.vip2021-07-29 13:37:50Hello、欢迎使用吐槽小黑屋,这就是个吐槽的地方。
  • 返回顶部

    给这篇文章打个标签吧~

    棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认