我有两个来自两个不同数据库的表,它们都包含lastName
和firstName
列。我需要创建JOIN
两者之间的关系。 lastName
列匹配约80%的时间,而firstName
列仅匹配约20%的时间。每个表都有完全不同的personID
主键。
一般来说,什么是最佳实践"和/或当我向其中一个表添加外键时使用的提示?由于我有大约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
请记住:有时它们完全匹配,通常不会,有时两个不同的人会有相同的名/姓。
答案 0 :(得分:1)
您可以加入多个字段。
select *
from table1
inner join table2
on table1.firstName = table2.firstName
and table1.lastName = table2.lastName
通过此,您可以确定有多少'重复'名字/姓氏组合有。
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
最后一个查询可能是执行大量外键更新的基础。
对于那些在表之间不止一次匹配的名称,他们可能需要某种手动干预,除非表中还有其他字段可用于区分它们吗?