在MySQL中查找具有相同值的行

在[成员]表中,某些行的email列的值相同。

 login_id | email ---------|--------------------- john | john123@hotmail.com peter | peter456@gmail.com johnny | john123@hotmail.com ... 

有些人使用了不同的login_id,但电子邮件地址相同,没有设置唯一的约束。 现在我需要find这些行,看看是否应该删除。

我应该用什么SQL语句来查找这些行? (MySQL 5)

这个查询会给你一个电子邮件地址的列表,以及它们被使用的次数,首先使用最多的地址。

 select email, count(*) as c from table group by email having c > 1 order by c desc 

如果你想要整行:

 select * from table where email in ( select email from table group by email having count(*) > 1 ) 
 select email from mytable group by email having count(*) >1 

这里是查询email的用于多个login_id

 SELECT email FROM table GROUP BY email HAVING count(*) > 1 

您将需要第二个(嵌套的)查询来通过email获取login_id的列表。

接受答案的第一部分不适用于MSSQL。
这对我工作:

 select email, COUNT(*) as C from table group by email having COUNT(*) >1 order by C desc 

如果您的电子邮件列包含空值,请使用此选项

  select * from table where email in ( select email from table group by email having count(*) > 1 and email != '' ) 

谢谢你们:-)我使用了下面的内容,因为我只关心那两列,其余的不多。 工作很好

  select email, login_id from table group by email, login_id having COUNT(email) > 1