查出谁在重复要点
- 按疑似重复列 GROUP BY,COUNT(*) 算每组出现次数
- HAVING 计数 != 1 只留下真正重复的组(组内至少两条)
- 多列重复就把多列都写进 GROUP BY 和 SELECT
- 给计数起别名便于 HAVING 引用,如 HAVING cnt != 1
- 想看重复组里具体有哪些行,再用子查询或 JOIN 捞出
- 先确认'哪些列算重复'再分组,列选错会漏判
查出谁在重复示例
-- 找出重复的用户名及其出现次数
SELECT username, COUNT(*) AS cnt
FROM member
GROUP BY username
HAVING cnt != 1;
-- 按"邮箱加手机"组合判定重复
SELECT email, phone, COUNT(*) AS cnt
FROM member
GROUP BY email, phone
HAVING cnt != 1;
避坑提醒:HAVING 与 WHERE 不同——WHERE 在分组前过滤行,HAVING 在分组后过滤组;对聚合结果筛选必须放 HAVING。