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

求助:如何统计MySQL表中的重复记录数量并查询people表的重复记录及次数

解决MySQL重复记录统计问题

嗨,很高兴能帮你搞定这个统计重复记录的需求!你想要统计people表中姓名+年龄组合的重复次数,这个思路很明确,我们来一步步优化你的SQL语句。

需求回顾

你需要筛选出NAME和AGE组合出现次数大于1的记录,最终得到如下格式的结果:

NAME | AGE | COUNT
Max | 21 | 3
Tom | 30 | 2
Jim | 45 | 3

原SQL的冗余点分析

你的初始SQL思路是对的,但存在不必要的冗余:

select name, count(name), age, count(age) FROM people GROUP BY name, age HAVING (COUNT(name) > 1) AND (COUNT(age) > 1) ;
  • 因为已经按name和age分组,每个组内的name和age完全一致,所以count(name)和count(age)的结果是完全相同的,没必要同时统计两个;
  • HAVING子句里的两个条件重复,只要判断一次计数大于1就足够了。

优化后的正确SQL

我们可以简化语句,同时精准匹配你想要的结果格式:

SELECT name, age, COUNT(*) AS `COUNT`
FROM people
GROUP BY name, age
HAVING COUNT(*) > 1;

语句详解

  1. GROUP BY name, age:这是核心逻辑,它会把name和age完全相同的记录归为一组,确保我们统计的是「姓名+年龄」这个组合的重复次数;
  2. COUNT(*):用来统计每个分组内的记录数量,也就是该组合的重复次数,用AS COUNT指定列名,和你期望的输出格式完全匹配;
  3. HAVING COUNT(*) > 1:过滤掉只出现一次的组合(比如Bob和Nik的记录),只保留重复的分组。

执行这条语句后,就能得到你想要的结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:27:32