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)
您不能直接在 MySQL 中执行此操作,因为没有函数urlencode或urldecode字符串。
您必须创建一个用户定义函数来处理该过程。一旦你有了这个函数,就可以使用一个简单的group by带有having子句的函数。
如果 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)