具有相似列但主键不同的两个表

Two tables with similar columns but different primary keys

我有两个来自两个不同数据库的 table,并且都包含 lastNamefirstName 列。我需要在两者之间建立 JOIN 关系。 lastName 列大约有 80% 的时间匹配,而 firstName 列只有大约 20% 的时间匹配。每个 table 都有完全不同的 personID 主键。

一般来说,当我向 table 之一添加外键时,有哪些 "best practices" and/or 技巧可以使用?由于我有大约 4,000 个不同的人,任何省力的提示将不胜感激。

样本不匹配数据:

db1.table1_____________________  db2.table2_____________________
23    Williams       Fritz       98   Williams       Frederick
25    Wilson-Smith   James       12   Smith          James Wilson
26    Winston        Trudy       73   Winston        Gertrude

请记住:有时他们完全匹配,通常他们不匹配,有时两个不同的人会有相同的 first/last 名字。

您可以加​​入多个字段。

select * 
  from table1
    inner join table2
      on table1.firstName = table2.firstName
        and table1.lastName = table2.lastName

由此您可以确定有多少 'duplicate' 名字/姓氏组合。

select table1.firstName, table2.lastName, count(*)
  from table1
    inner join table2
      on table1.firstName = table2.firstName
        and table1.lastName = table2.lastName
  group by table1.firstName, table2.lastName
  having count(*) > 1

反之,也可以判断相同且只匹配一次的:

select table1.firstName, table2.lastName
  from table1
    inner join table2
      on table1.firstName = table2.firstName
        and table1.lastName = table2.lastName
  group by table1.firstName, table2.lastName
  having count(*) = 1

最后一个查询可能是执行大量外键更新的基础。

对于那些在 table 之间匹配不止一次的名称,他们可能需要某种手动干预,除非 table 中有其他字段可用于区分它们?