Reputation: 329
I want to fetch duplicate email from table:
userid email
-------------------------
1 [email protected]
2 [email protected]
3 abc%40gmail.com
4 [email protected]
5 abcd%40gmail.com
So from above records i want result like
Email Count
-------------------------
[email protected] 2
[email protected] 2
[email protected] 1
Does anybody know how to manage that?
Thanks.
Upvotes: 6
Views: 13094
Reputation: 31
Here is a simple solution:
SELECT email, COUNT(1) FROM table_name GROUP BY email HAVING COUNT(1) > 1
Upvotes: 3
Reputation: 43434
You can't directly do that in MySQL because there is no function to urlencode
or urldecode
strings.
You will have to create a User Defined Function to handle that process. Once you have that function just go for a simple group by
with a having
clause.
If UDFs are not an option, the only workaround I can think of is manually replacing the chars (under your own risk):
SELECT REPLACE(email, "%40", "@") DuplicateEmail, COUNT(*) Amount
FROM t
GROUP BY DuplicateEmail
ORDER BY Amount desc
Fiddle here.
Output:
| DUPLICATEEMAIL | AMOUNT |
---------------------------
| [email protected] | 2 |
| [email protected] | 2 |
| [email protected] | 1 |
Upvotes: 4
Reputation: 6133
If you want to output the data exactly like shown in your question, use this query:
SELECT email, COUNT(*) AS count
FROM table
GROUP BY email HAVING count > 0
ORDER BY count DESC;
Upvotes: 13