匹配实体 - 自我多对多

时间:2017-05-07 16:27:57

标签: sql sql-server

使用新的主数据管理产品,特别是人员匹配。 我有两个表:Person和PersonMatch。 PersonMatch是一个连接表,它将Person中的行与Person中的另一行匹配。

人:1,2,3,4(根据PersonMatch,这些人都是同一人)。

PersonMatch:1 + 2,2 + 3,3 + 4,4 + 1

我无法绕过查询来处理Person表中的所有四个实体。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

听起来我需要一个特定的PersonUniqueId列,并且所有相同的Person实例都可以有自己唯一的ID来识别它们的差异,但是它们每个都会共享相同的PersonUniqueId& #39;,这反映出他们实际上是同一个人,只是有不同或额外的后续信息。

如果您没有使用PersonUniqueId,那么您需要弄清楚每条记录中的内容将两个人识别为相同,可能是名称,还是其他任何内容。不了解你的整体结构很难说最好的方向是什么,但希望这是一个开始。

可能甚至不需要PersonMatch表。或者,您可以将PersonUniqueId列放在该表中,然后执行以下操作:

SELECT p.*
FROM Persons p, PersonMatch pm
WHERE p.PersonId = pm.PersonId
GROUP BY pm.PersonUniqueId

希望这有帮助。