返回介绍

2.5 集合运算

发布于 2024-10-03 00:33:41 字数 745 浏览 0 评论 0 收藏 0

在 MySQL 中,只支持 Union(并集) 集合运算,而对于交集 Intersect 和差集 Except 并不支持。那么如何才能在 MySQL 中实现交集和差集呢?

一般在 MySQL 中,我们可以通过 in 和 not in 来间接实现交集和差集,当然也有一定局限性,面对少量数据还可以,但数据量大了效率就会变得很低。

求差集 :使用 not in 求差集,但效率低

SELECT t1.* FROM t1
WHERE
name NOT IN
(SELECT name FROM t2)

求交集 : 表 t1/t2 中,字段 id、name 和 age 都一样

SELECT id, NAME, age, COUNT(*)
  FROM (SELECT id, NAME, age
    FROM t1
    UNION ALL
    SELECT id, NAME, age
    FROM t2
    ) a
  GROUP BY id, NAME, age
  HAVING COUNT(*) > 1

结果:

id NAME  age COUNT(*)
1  小王   10 2
4  hello  40 2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文