我想从表中获取重复的电子邮件:
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中直接执行此操作,因为urlencode
或urldecode
字符串没有功能。
您将必须创建一个用户定义函数来处理该过程。一旦有了该功能,就可以使用带有group by
子句的简单having
。
如果没有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 |
如果您要输出的数据与问题中显示的完全相同,请使用此查询:
SELECT email, COUNT(*) AS count
FROM table
GROUP BY email HAVING count > 0
ORDER BY count DESC;
这是最简单的解决方案:
选择电子邮件,从table_name的COUNT(1)个电子邮件中,GROUP BY电子邮件具有COUNT(1)> 1