You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.7:如何查询出现在3张表中任意2张及以上的ID?

MySQL 5.7 查询在至少2张表中出现的ID

可以通过合并所有表的ID并统计出现次数的方式实现,核心思路是用UNION ALL把三张表的ID集合整合(保留重复项),再分组统计每个ID的出现频次,最后筛选出频次≥2的ID。

假设你的三张表分别是table_a、table_b、table_c,都包含id字段,执行以下SQL即可:

SELECT id
FROM (
    SELECT id FROM table_a
    UNION ALL
    SELECT id FROM table_b
    UNION ALL
    SELECT id FROM table_c
) AS combined_ids
GROUP BY id
HAVING COUNT(*) >= 2;

关键细节说明:

  • 使用UNION ALL而非UNION:UNION会自动去重,无法统计ID出现的实际次数;UNION ALL保留所有重复的ID,确保统计准确。
  • 处理NULL值(可选):如果你的id字段允许NULL,而你想排除这些NULL值,可以在每个子查询中添加过滤条件:
    SELECT id
    FROM (
        SELECT id FROM table_a WHERE id IS NOT NULL
        UNION ALL
        SELECT id FROM table_b WHERE id IS NOT NULL
        UNION ALL
        SELECT id FROM table_c WHERE id IS NOT NULL
    ) AS combined_ids
    GROUP BY id
    HAVING COUNT(*) >= 2;
    
  • 性能优化:如果三张表的数据量较大,确保每张表的id字段都创建了索引,这样UNION ALL的查询效率会更高。

内容的提问来源于stack exchange,提问作者Duncan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:34:52