Mysql查询查找与另一行具有相同值的所有行

kas*_*ega 5 mysql sql

我的数据库包含通常如下所示的行:

PersonItem
__________
id
personId
itemId

??????????????????????????
? ID ? PERSONID ? ITEMID ?
??????????????????????????
?  1 ?      123 ?    456 ?
?  2 ?      123 ?    456 ?
?  3 ?      123 ?    555 ?
?  4 ?      444 ?    456 ?
?  5 ?      123 ?    456 ?
?  6 ?      333 ?    555 ?
?  7 ?      444 ?    456 ?
??????????????????????????
Run Code Online (Sandbox Code Playgroud)

我需要找到所有实际记录,其中PersonId和ItemId列匹配数据库中这两列的其他记录....

| 1  |   123    |   456
| 2  |   123    |   456
| 5  |   123    |   456

| 4  |   444    |   456
| 7  |   444    |   456
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得这些结果?

Joh*_*Woo 8

您可以进行连接以处理重复记录.

SELECT  a.*
FROM    TableName a
        INNER JOIN
        (
            SELECT  PersonID, ItemID, COUNT(*) totalCount
            FROM    TableName
            GROUP   BY PersonID, ItemID
            HAVING  COUNT(*) > 1
        ) b ON  a.PersonID = b.PersonID AND
                a.ItemID = b.ItemID
Run Code Online (Sandbox Code Playgroud)

OUTPUT

??????????????????????????
? ID ? PERSONID ? ITEMID ?
??????????????????????????
?  1 ?      123 ?    456 ?
?  2 ?      123 ?    456 ?
?  5 ?      123 ?    456 ?
?  4 ?      444 ?    456 ?
?  7 ?      444 ?    456 ?
??????????????????????????
Run Code Online (Sandbox Code Playgroud)