← Все вопросы

Как найти дубликаты email в таблице users?

Задан 5 месяцев назад794 просмотров3 ответа
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.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект