SQL 在一个表中查找另一个变体的值



>我有 2 个这样的表。

Table1
FullName     LastName    FirstName
John Smith   Smith       John
Table2
LastName     Firstname   AKA
Smith Stein  Johnny      John the Bad Guy

我需要找到table2table1lastnamefirstname的任何变化。但是,我无法加入表,因为名称可能不同,因此没有什么可连接的。基本上,我正在尝试将我们的列表与公共列表进行比较,以查看是否有任何名称匹配。

我正在尝试这个:

Select * 
from table1
where exists (select * 
from table2 
where charindex(table1.lastname, table2.lastname)>0 
and charindex(table1.firstname,table2.firstname)>0)

我得到了返回的值,但我也想查看 table2 中的值。

我需要看到约翰史密斯回来并显示约翰史密斯斯坦在另一个表中被标记。姓氏的这种变体也适用于名字。这就是为什么我不能加入任何 1 个特定列的原因。

抱歉,如果这令人困惑。

在您的示例中,您正在检查名称之间的完全匹配,那么为什么不加入它们呢?

SELECT t1.*, t2.*
FROM table1 t1
JOIN table2 t2 on t2.firstname = t1.firstname
and t2.lastname = t2.lastname

不确定"相似"名称的规则是什么,但您可以尝试这样的事情:

SELECT t1.*, t2.*
FROM table1 t1
JOIN table2 t2 on  
t1.lastname = t2.lastname or t1.lastname=t2.aka or whatever other rules you want to set up

最新更新