It's easy to find duplicates
with one field:
SELECT name, COUNT(email)
FROM users
GROUP BY email
HAVING COUNT(email) > 1
So if we have a table
ID NAME EMAIL
1 John asd@asd.com
2 Sam asd@asd.com
3 Tom asd@asd.com
4 Bob bob@asd.com
5 Tom asd@asd.com
This query will give us John, Sam, Tom, Tom because they all have the same email
.
However, what I want is to get duplicates with the same email
and name
.
That is, I want to get "Tom", "Tom".
The reason I need this: I made a mistake, and allowed to insert duplicate name
and email
values. Now I need to remove/change the duplicates, so I need to find them first.
By Using CTE also we can find duplicate value like this
try this:
OUTPUT:
if you want the IDs of the dups use this:
OUTPUT:
to delete the duplicates try:
OUTPUT:
Try this:
In case you work with Oracle, this way would be preferable:
A little late to the party but I found a really cool workaround to finding all duplicate IDs: