← Все вопросы
Как найти дубликаты email в таблице users?
16
В users(id, email) где-то закрались повторяющиеся email. Хочу найти именно те адреса, которые встречаются больше одного раза. Через GROUP BY получается, но как отфильтровать только повторы?
3 ответа
27
✓ Принятый ответ — помог автору
Группируешь по email и фильтруешь группы через HAVING COUNT(*) > 1:
SELECT email, COUNT(*) AS cnt
FROM users
GROUP BY email
HAVING COUNT(*) > 1;
Важно: условие на агрегат идёт в HAVING, а не в WHERE. WHERE фильтрует строки ДО группировки и про COUNT ничего не знает, а HAVING — уже готовые группы.
8
Если дубликат — это совпадение по нескольким колонкам сразу, просто перечисли их все в GROUP BY: GROUP BY email, phone HAVING COUNT(*) > 1.
5
HAVING COUNT(*) > 1.
Ваш ответ
Войдите, чтобы ответить на вопрос.