25

Нахождение дубликатов в таблице SQL

19

Проблема: Как найти дубликаты по двум полям в 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-запрос для этой задачи?

0 ответ(ов)

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь