【发布时间】:2014-12-30 02:08:15
【问题描述】:
我已经设置了两个表格,如下所示:
table1
id | firstName | lastName
-----|------------|-----------
01 | john | smith
02 | dick | johnson
03 | sam | adams
04 | tiberius | kirk
table2
fullName | status
--------------------|---------
john smith | active
dick arnold johnson | active
samuel adams | disabled
jim tiberius | active
我需要将表 2 中的状态列获取到表 1。但问题是两个表中的名称不完全匹配(正如我已经证明的那样)。我想保留 table1 中的所有条目,即使它无法将它们与 table2 中的条目匹配。最终,我希望我的输出是这样的:
id | firstName | lastName | fullName | status
-----|------------|-----------|---------------------|--------
01 | john | smith | john smith | active
02 | dick | johnson | dick arnold johnson | active
03 | sam | adams | samuel adams | disabled
04 | tiberius | kirk | NULL | NULL
我一直在尝试弄清楚如何使用 LEFT JOIN 来做到这一点,但我对 SQL 非常陌生,并且无法弄清楚 1) 如果 table1 和 table2 之间没有公共列和2) 我如何让它尝试在 fullName 中找到 fullName 和 lastName 并且仅在两者都匹配时才加入条目?
【问题讨论】:
-
您确定没有其他方法可以在表 1 和表 2 之间获得真实身份匹配吗?如果不是,您可能不得不使用一些模糊逻辑(也许是 SOUNDEX)来推断关系,但不能保证匹配 100% 准确
-
@Blindy,我正在使用内部开发的工具,该工具使用 SQL 运行查询,因此我认为它不符合任何常见类型。不过,我对此的理解可能完全错误。
-
@BradD,我无法在两个表之间直接匹配,所以这肯定依赖于模糊逻辑。这是预期的结果,所以它不会 100% 准确也没关系。
标签: sql