我在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)
它工作正常,但速度很慢,因为查询似乎没有使用索引.还有其他想法吗?谢谢!
解决方案 :
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)