我有一张包含许多重复记录的人员表(名字和姓氏相同)。我正在尝试编写一个查询,列出这些记录的所有内容。我不想将它们分组,因为我需要查看带有成员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;
答案 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)
在我看来,分组实际上是要走的路。 mysql对这些情况具有非常有用的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