如何在mysql表中找到重复的电子邮件

时间:2013-08-15 06:15:33

标签: mysql duplicate-data

我想从表格中获取重复的电子邮件:

userid      email
-------------------------
1       abc@gmail.com
2       abcd@gmail.com
3       abc%40gmail.com
4       xyz@gmail.com
5       abcd%40gmail.com

所以从上面的记录我想要像

这样的结果
Email          Count
-------------------------
abc@gmail.com   2
abcd@gmail.com  2
xyz@gmail.com   1

有人知道如何管理吗?

感谢。

3 个答案:

答案 0 :(得分:12)

如果要输出与问题中显示的数据完全相同的数据,请使用以下查询:

SELECT email, COUNT(*) AS count
FROM table
GROUP BY email HAVING count > 0
ORDER BY count DESC;

答案 1 :(得分:4)

你不能直接在MySQL中这样做,因为urlencodeurldecode字符串没有功能。

您必须创建用户定义函数来处理该过程。完成该功能后,只需使用group by子句的简单having

Link to the required UDFs

如果UDF不是一个选项,我能想到的唯一解决方法是手动替换字符(由您自己承担风险):

SELECT REPLACE(email, "%40", "@") DuplicateEmail, COUNT(*) Amount
FROM t
GROUP BY DuplicateEmail
ORDER BY Amount desc

小提琴here

输出:

| DUPLICATEEMAIL | AMOUNT |
---------------------------
|  abc@gmail.com |      2 |
| abcd@gmail.com |      2 |
|  xyz@gmail.com |      1 |

答案 2 :(得分:1)

这是一个简单的解决方案:

SELECT email, COUNT(1) FROM table_name GROUP BY email HAVING COUNT(1) > 1