【发布时间】:2016-04-11 19:29:03
【问题描述】:
我正在尝试加入只有两个匹配键是 table1.Account 和 table2.key 的表
但问题在于设置。 table1.Account字段有10位,只有中间4或5位与table2.key匹配
eg : 1234xxxx10 - > table1.Account matches with xxxx -> table2.key
or 123xxxxx10 - > table1.Account matches with xxxxx -> table2.key
我已经编写了这段 INNER JOIN 代码,但是查询一直在运行并且没有返回任何内容。
SELECT DISTINCT column1, column2
from table1 INNER JOIN table2 ON table1.Account like '%'+table2.key+'%'
order by column1
【问题讨论】:
-
如果您删除
distinct,您应该可以更快地获得一些结果。还有,你怎么知道中间的 4 还是 5 匹配? -
也许使用 left() 会比 like 更快
-
所以你必须处理一个非常糟糕的数据库设计。您最好的选择是更改它,以便单独的信息位于单独的列中。但是,如果您必须单独使用查询来解决此问题,则必须首先声明查找相关子字符串所依据的规则。它总是字符串中最后两个字符之前的四个或五个字符吗?如果一条记录同时匹配四个字符和另外五个字符怎么办?构成该规则,然后才考虑如何编写查询。
标签: sql sql-server join inner-join