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

MySQL如何仅返回Part ID出现2次及以上的行?

解决方法

要筛选出Part ID出现次数超过1次的行,你需要先找出所有出现次数大于1的Part ID,再基于这些ID去原表中获取对应的完整行,以下是两种可行的写法:

方法一:使用IN子句配合子查询

先通过子查询统计每个Part ID的出现次数,筛选出符合条件的ID,再在主查询中匹配这些ID:

SELECT part_id, company
FROM MyTable
WHERE part_id IN (
    SELECT part_id
    FROM MyTable
    GROUP BY part_id
    HAVING COUNT(*) > 1
);

方法二:使用JOIN关联统计结果

将统计出的符合条件的Part ID作为临时表,通过JOIN和原表关联获取目标行:

SELECT t.part_id, t.company
FROM MyTable t
JOIN (
    SELECT part_id
    FROM MyTable
    GROUP BY part_id
    HAVING COUNT(*) > 1
) cnt ON t.part_id = cnt.part_id;

为什么直接用COUNT(*)无效?

你之前尝试的COUNT(*)如果没有配合GROUP BY part_id,只会统计整个表的行数;即使分组后,单独的统计查询只能返回Part ID和对应的次数,无法直接得到原表的完整行数据。所以必须先筛选出符合条件的Part ID集合,再关联原表获取所需内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:25:09