列出重复记录的所有实例的MySQL查询

时间:2017-10-21 19:46:42

标签: mysql

我有一张包含许多重复记录的人员表(名字和姓氏相同)。我正在尝试编写一个查询,列出这些记录的所有内容。我不想将它们分组,因为我需要查看带有成员ID号的重复记录。例如,如果表中有3个Joe Smiths,我希望在运行查询后看到此列表:

MemberID   FirstName    LastName
8746       Joe          Smith
8944       Joe          Smith
9774       Joe          Smith

我尝试编写一个查询,但它只列出了表中的所有记录。以下是我尝试过没有做到我想要的事情:

 SELECT membership.Member_ID,membership.FirstName,membership.LastName    
 FROM membership WHERE membership.FirstName = membership.FirstName AND
 membership.LastName = membership.LastName;

4 个答案:

答案 0 :(得分:0)

您可以按照以下方式自行加入:

SELECT distinct 
 m1.Member_ID,m1.FirstName,m1.LastName    
 FROM membership m1
 inner join membership m2
 on m1.memberid = m2.memberid
 where m1.FirstName = m2.FirstName 
 AND m1.LastName = m2.LastName
 and m1.id <> m2.id;

希望它有所帮助!

答案 1 :(得分:0)

在我看来,分组实际上是要走的路。 对这些情况具有非常有用的group_concat功能:

SELECT   FirstName, LastName, GROUP_CONCAT(MemberID) AS ids
FROM     membership
GROUP BY FirstName, LastName
HAVING   COUNT(*) > 1

答案 2 :(得分:0)

尝试这样的事情:

SELECT Member_ID, FirstName, LastName    
FROM membership
WHERE CONCAT(FirstName, LastName) IN ( SELECT CONCAT(FirstName, LastName)
                                       FROM membership
                                       GROUP BY FirstName, LastName
                                       HAVING COUNT(*) > 1 )

答案 3 :(得分:0)

要获取所有重复记录,您还可以使用相关子查询

select a.* 
from demo a
where (
  select count(*)
  from demo b
  where a.FirstName = b.FirstName
  and a.LastName = b.LastName
) > 1

DEMO