Таблица пользователей MySQL: найдите строки с одинаковым адресом электронной почты - PullRequest
2 голосов
/ 02 февраля 2011

У меня есть таблица пользователей в MySQL.

id | username | email

Я хотел бы получить идентификаторы дублированных пользователей на основе адреса электронной почты.Поэтому, в основном, найдите идентификаторы пользователей, в которых адрес электронной почты можно найти более 1 раза в таблице.

Я написал примерно так:

SELECT id
FROM users as users
WHERE (
  SELECT count(id)
  FROM users as users2
  WHERE users.email = users2.email
) > 1

Работает нормально, но очень медленно, поскольку запрос, кажется, не использует индекс.Есть еще идеи?Спасибо!

1 Ответ

6 голосов
/ 02 февраля 2011

Решение:

select u.id
from users as u
inner join
(    SELECT email
    FROM users
    GROUP BY users.email
    HAVING count(id) > 1
) as u2 on u2.email = u.email
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...