6

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

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

有人知道如何管理吗?

谢谢。

4

3 回答 3

12

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

SELECT email, COUNT(*) AS count
FROM table
GROUP BY email HAVING count > 0
ORDER BY count DESC;
于 2013-08-15T06:31:19.833 回答
4

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

您必须创建一个用户定义函数来处理该过程。一旦你有了这个功能,只需使用一个简单group byhaving子句。

链接到所需的 UDF

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

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

在这里拉小提琴。

输出:

| DUPLICATEEMAIL | AMOUNT |
---------------------------
|  abc@gmail.com |      2 |
| abcd@gmail.com |      2 |
|  xyz@gmail.com |      1 |
于 2013-08-15T06:38:15.153 回答
2

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

SELECT email, COUNT(1) FROM table_name GROUP BY email HAVING COUNT(1) > 1
于 2020-03-10T05:53:25.430 回答