我有两个来自两个不同数据库的表格,它们都包含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
请记住:有时严丝合缝,往往他们不这样做,有时候两个不同的人都会有相同的第一/姓氏。
样本数据之间没有直接关系 - 是否应该导致“加入”? –
这显示了不匹配数据的最坏情况示例。但是,下面的优秀答案准确地反映了如何首先通过固体匹配,然后处理不匹配以及重复数据。是的,还有其他的领域将会有所帮助,比如美国是这个人的国家。我也会尝试一些小的子串和正则表达式函数;如lastName加firstInitial。再次感谢! – KiloVoltaire
@KiloVoltaire我想提出一点不同的可能性来获得部分匹配的行 - 如果你有多个列(你说状态),那么你可以加入“匹配列的数量L - 说你只有3 - 第一个/最后一个名字和状态,并且你可以写在任何两个匹配的球员都会这样做,所以同样的首先和状态,相同的最后和状态等等。更多的列你有更好的结果你得到,只有你需要得到正确的门槛(7中的4个将返回多于7个中的6个)并且还可以计算字符串差异的分数(可能为Levenshtein距离)。 – jkavalik