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

Ste*_*tin 6 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
Run Code Online (Sandbox Code Playgroud)

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

Email          Count
-------------------------
abc@gmail.com   2
abcd@gmail.com  2
xyz@gmail.com   1
Run Code Online (Sandbox Code Playgroud)

有人知道如何管理吗?

谢谢.

der*_*sen 12

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

SELECT email, COUNT(*) AS count
FROM table
GROUP BY email HAVING count > 0
ORDER BY count DESC;
Run Code Online (Sandbox Code Playgroud)


Mos*_*cho 4

您不能直接在 MySQL 中执行此操作,因为没有函数urlencodeurldecode字符串。

您必须创建一个用户定义函数来处理该过程。一旦你有了这个函数,就可以使用一个简单的group by带有having子句的函数。

链接到所需的 UDF

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

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

在这里摆弄。

输出:

| DUPLICATEEMAIL | AMOUNT |
---------------------------
|  abc@gmail.com |      2 |
| abcd@gmail.com |      2 |
|  xyz@gmail.com |      1 |
Run Code Online (Sandbox Code Playgroud)