这是场景。
我在 SQL Server 2008 R2 表中有两条记录,如下所示:
ID Name
1 Joe Stephen Brown
2 Joe Henry Wallace Brown
3 Jerry Joe Carr
4 Jerry Lewis
我已经对 name 列进行了标记并将其与标记关联的 id 一起放入标记表中,这样我们现在就有了:
ID Token
1 Joe
1 Stephen
1 Brown
2 Joe
2 Henry
2 Wallace
2 Brown
3 Jerry
3 Joe
3 Carr
4 Jerry
4 Lewis
我希望能够在此表上进行自联接,以便我可以计算自联接中一个表中的令牌与自联接中另一表中的令牌匹配的次数。所以比赛应该是这样的:
Table1.ID Table1.Token Table2.ID Table2.Token
1 Joe 2 Joe
1 Brown 2 Brown
1 Joe 3 Joe
3 Jerry 4 Jerry
(记录 1 和 2 有两个标记匹配项('Joe' 和 'Brown'),记录 1 和 3 有一个('Joe'),记录 3 和 4 有一个('Jerry')。)
所以我希望比赛的最终报告是这样的:
Table1.ID Table2.ID Number of matches
1 2 2
1 3 1
3 4 1
但是,我很难做到这一点。我想单独对令牌进行自连接,但如果令牌表中还有其他带有“Joe”和“Brown”的记录,就会变得复杂。
编辑
如果有这样的场景:
ID Name
1 Joe Stephen Brown
2 Joe Henry Brown Brown
如果可能的话,我希望匹配计数为 2;换句话说,“Joe Stephen Brown”中的“Brown”应该匹配“Joe Henry Brown Brown”中的第一个“Brown”,而“Joe Henry Brown Brown”中的第二个“Brown”应该保持不匹配。然后应该计算 'Joe' > 'Joe' 和 'Brown' > 第一个 'Brown' 匹配。