我想从表格中获取重复的电子邮件:
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
有人知道如何管理吗?
感谢。
答案 0 :(得分:12)
如果要输出与问题中显示的数据完全相同的数据,请使用以下查询:
SELECT email, COUNT(*) AS count
FROM table
GROUP BY email HAVING count > 0
ORDER BY count DESC;
答案 1 :(得分:4)
你不能直接在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 |
---------------------------
| 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