MySQL用户表: find rows that have the same email address

标签 mysql indexing

我在 MySQL 中有一个用户表。

id | username | email

我想根据电子邮件地址获取重复用户的 ID。所以基本上是在表格中找到email地址可以找到1次以上的用户的Id。

我是这样写的:

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

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

最佳答案

解决办法:

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

关于MySQL用户表: find rows that have the same email address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4872056/

相关文章:

mysql - PDO 应该在函数中使用吗?

c++ - 在 mex 函数中索引和访问元胞数组和矩阵的元素

r - 根据 R 中另一个数据帧的索引创建一个新数据帧

mysql - laravel where 子句即使数据存在也返回 null

java - 根据从数据库检索的数据设置变量

c# - 使用C#参数化创建MYSQL数据库

php - PDO 的 UPDATE 和 FETCHALL() 规则

drupal - 我可以告诉站点爬虫访问某个页面吗?

oracle - 索引范围扫描 vs 索引跳过扫描 vs 索引快速全扫描

c - 变量周围的堆栈已损坏 - C