Нахождение дубликатов в таблице SQL
Проблема: Как найти дубликаты по двум полям в SQL-запросе?
Я столкнулся с задачей поиска дубликатов в таблице пользователей по двум полям: email
и name
.
Проще всего находить дубликаты по одному полю, как показано в следующем запросе:
SELECT email, COUNT(email)
FROM users
GROUP BY email
HAVING COUNT(email) > 1
Для примера, у нас есть следующая таблица:
ID NAME EMAIL
1 John [email protected]
2 Sam [email protected]
3 Tom [email protected]
4 Bob [email protected]
5 Tom [email protected]
Этот запрос вернёт пользователей, имеющих одинаковый email
, и в данном случае это будут John, Sam и два Tomа, так как у них одно и то же значение email
.
Однако, моя цель – найти дубликаты, где значения по полям email
и name
совпадают. То есть, мне необходимо получить только "Tom" и "Tom".
Причина, по которой я это делаю, заключается в том, что я допустил ошибку и разрешил вставку дубликатов значений name
и email
. Сейчас мне нужно удалить или изменить дубликаты, поэтому сначала мне необходимо их найти.
Каков правильный SQL-запрос для этой задачи?
Как конкатенировать текст из нескольких строк в одну строку в SQL Server
Как вывести список таблиц в файле базы данных SQLite, открытом с помощью ATTACH?
Обновление данных в одной таблице из другой на основе совпадения ID
Выбрать первую строку в каждой группе GROUP BY?
Как вывести сырой SQL-запрос в виде строки из билдера запросов?