2011-02-02 16 views
2

私はMySQLでusersテーブルを持っています。MySQLユーザーテーブル:同じ電子メールアドレスを持つ行を見つける

id | username | email 

電子メールアドレスに基づいて重複したユーザーのIDを取得したいと考えています。だから、基本的に、テーブルの電子メールアドレスを1回以上見つけることができるユーザのIDを見つける。クエリがインデックスを使用していないようだと

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

それは、[OK]を、しかし非常に遅い動作します:

私はこのような何かを書きました。他のアイデア?ありがとう!

答えて

5

ソリューション:

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 
+0

が、これは単なる例クエリのように、すべてのIDの代わりに非一意の電子メールで利用者の1つのIDを返さないでしょうか? – gnur

+0

ええ、私もそれを試しました、それは1 id/emailを返すだけですが、私はすべてのIDを取得したいと思います。 – sydo

+0

私はクエリを更新しました:) –

関連する問題