在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