MySQL用户表:查找具有相同电子邮件地址的行

syd*_*ydo 3 mysql indexing

我在MySQL中有一个用户表.

id | username | email
Run Code Online (Sandbox Code Playgroud)

我想根据电子邮件地址获取重复用户的ID.所以基本上找到用户的ID,其中可以在表中找到超过1次的电子邮件地址.

我写了这样的东西:

SELECT id
FROM users as users
WHERE (
  SELECT count(id)
  FROM users as users2
  WHERE users.email = users2.email
) > 1
Run Code Online (Sandbox Code Playgroud)

它工作正常,但速度很慢,因为查询似乎没有使用索引.还有其他想法吗?谢谢!

Har*_*OTA 8

解决方案 :

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
Run Code Online (Sandbox Code Playgroud)