MySQL如何统计email或phone字段存在重复的行总数量
实现方案
假设你的表名为user_info,可直接使用如下SQL语句查询:
SELECT COUNT(*) AS total FROM user_info WHERE email IN ( SELECT email FROM user_info GROUP BY email HAVING COUNT(*) > 1 ) OR phone IN ( SELECT phone FROM user_info GROUP BY phone HAVING COUNT(*) > 1 );
逻辑说明
- 内层子查询分别统计出现次数大于1的重复邮箱、重复手机号集合
- 外层查询匹配所有满足「邮箱属于重复邮箱集合」或「手机号属于重复手机号集合」的行,直接统计行数即可
- 针对你给出的示例数据,匹配到的行共3行,和预期结果完全一致
优化建议
如果表数据量较大,建议给email和phone字段添加索引,可大幅提升查询效率。
内容的提问来源于stack exchange,提问作者Romil
相关产品推荐
相关产品推荐

