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

如何查询MySQL表中type_id与category组合的重复关联记录

解决itemTypes表重复关联记录的查询问题

没问题,我来帮你搞定这个需求!你现在需要的是找出type_id和category(这里特指cat1)组合下存在重复的所有具体记录,而不只是识别出有重复的type_id对吧?

方法一:使用窗口函数(推荐,支持现代数据库)

窗口函数可以轻松帮你在保留所有行数据的同时,统计每个分组的记录数,非常适合这种场景:

SELECT id, item_id, type_id, cat
FROM (
    SELECT 
        id, item_id, type_id, cat,
        -- 按type_id和cat分组统计每个组合的记录数
        COUNT(*) OVER (PARTITION BY type_id, cat) AS record_count
    FROM itemTypes
    WHERE cat = 'cat1'
) AS subquery
-- 筛选出记录数≥2的重复组合对应的所有行
WHERE record_count >= 2;

方法二:使用子查询关联(兼容旧版本数据库)

如果你的数据库不支持窗口函数(比如MySQL 5.x及以下),可以用子查询先找出存在重复的type_id+cat组合,再关联查询具体记录:

SELECT id, item_id, type_id, cat
FROM itemTypes
WHERE cat = 'cat1'
AND (type_id, cat) IN (
    -- 先找出有重复的type_id+cat组合
    SELECT type_id, cat
    FROM itemTypes
    WHERE cat = 'cat1'
    GROUP BY type_id, cat
    HAVING COUNT(*) >= 2
);

针对你的示例数据的执行结果

用上面任意一种方法,都会返回以下符合你期望的记录:

iditem_idtype_idcat
11005cat1
21105cat1
51255cat1
31156cat1
61306cat1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:07:27