How to find duplicate email within a mysql table
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;
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.
Link to the required UDFs
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 |
Here is a simple solution:
SELECT email, COUNT(1) FROM table_name GROUP BY email HAVING COUNT(1) > 1