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

MySQL查询不同行中Gender、age、postcode重复值的方法求助

找出MySQL表中重复行的解决方案

嘿,这个场景太常见了——数据量小的时候手动用GROUP BY凑合用,数据一上来简直头大!给你两个高效的方案,轻松找出table1中Gender、age、postcode都重复的行:

方案1:关联子查询(兼容所有MySQL版本)

先通过子查询定位出存在重复的字段组合,再关联原表把所有重复行拉出来:

SELECT t1.*
FROM table1 t1
JOIN (
    -- 先找出有重复的Gender/age/postcode组合
    SELECT Gender, age, postcode
    FROM table1
    GROUP BY Gender, age, postcode
    HAVING COUNT(*) > 1
) t2 
ON t1.Gender = t2.Gender 
AND t1.age = t2.age 
AND t1.postcode = t2.postcode
-- 按重复字段排序,方便查看同一组的重复行
ORDER BY t1.Gender, t1.age, t1.postcode;

方案2:窗口函数(MySQL 8.0及以上版本推荐)

如果你的MySQL是8.0或更新版本,用窗口函数会更简洁直观,直接给每行标记所在组的重复次数,再筛选出次数大于1的行:

SELECT *
FROM (
    SELECT *,
           -- 按三个字段分组,计算每组的行数
           COUNT(*) OVER (PARTITION BY Gender, age, postcode) AS duplicate_count
    FROM table1
) t
WHERE duplicate_count > 1
ORDER BY Gender, age, postcode;

小提示

  • 如果表有主键(比如id字段),可以在查询结果中包含主键,能快速区分不同的重复行;
  • 这两个方案都能直接返回所有重复的行,不用再手动核对,数据量再大也能轻松处理~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:03:36