在 MySQL 中查找重复值
技术背景
在数据库管理中,查找重复值是一项常见需求。比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值。在 MySQL 里,有多种方法可以实现这一目的。
实现步骤
方法一:使用 GROUP BY 和 HAVING 子句
此方法可找出指定列中的重复值,并统计其出现次数。
SELECT name, COUNT(*) c FROM table GROUP BY name HAVING c > 1;
- 步骤:
- 使用
GROUP BY子句按name列分组。 - 用
COUNT(*)函数统计每组的记录数。 - 利用
HAVING子句筛选出记录数大于 1 的组。
- 使用
方法二:仅返回重复值
SELECT varchar_col FROM table GROUP BY varchar_col HAVING COUNT(*) > 1;
- 步骤:
- 按
varchar_col列分组。 - 统计每组记录数。
- 筛选出记录数大于 1 的组,仅返回
varchar_col列的值。
- 按
方法三:返回完整记录
SELECT * FROM mytable mto WHERE EXISTS (SELECT 1 FROM mytable mti WHERE mti.varchar_column = mto.varchar_column LIMIT 1, ) varchar_column;

