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

问题描述 投票:6回答:3

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

userid      email
-------------------------
1       [email protected]
2       [email protected]
3       abc%40gmail.com
4       [email protected]
5       abcd%40gmail.com

所以从上面的记录中我想要的结果是

Email          Count
-------------------------
[email protected]   2
[email protected]  2
[email protected]   1

有人知道如何管理吗?

谢谢。

mysql duplicate-data
3个回答
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 |
---------------------------
|  [email protected] |      2 |
| [email protected] |      2 |
|  [email protected] |      1 |

12
投票

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

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

0
投票

这是最简单的解决方案:

选择电子邮件,从table_name的COUNT(1)个电子邮件中,GROUP BY电子邮件具有COUNT(1)> 1

© www.soinside.com 2019 - 2024. All rights reserved.