首页 > 解决方案 > 搜索 2 次以在 2 个表之间进行匹配

问题描述

我有 2 个带 ID 的表。

我想做类似左连接的事情:

我希望如果 TABLE2 中不存在来自 TABLE1 的 ID,它将在 TABLE2 中搜索具有相同 5 位数字的 ID。

但我希望它在没有找到完整匹配之后搜索最后 5 位数字之间的匹配。

例如:

表格1:

ID       Name
1111111  'aa'
2222222  'bb'
3333333  'cc'
4444444  'dd'
5555555  'ee'
6666666  'ff'

表2:

ID       City
1166666  're'
7833333  'tv'
4444444  'gh'
8547555  'ie'
6666666  'rt'

接受的结果:

ID       Name  City  Status
1166666  'aa'  're'  ok
2222222  'bb'        no_record
3333333  'cc'  'tv'  ok \\last 5 digits are match.
4444444  'dd'  'gh'  ok
5555555  'ee'        no_record \\ just the last 3 digits are match.
6666666  'ff'  'rt'  ok 

在我的示例中,如果它将一起搜索完全匹配最后 5 位数字,他将匹配6666666to1166666而不是 to 6666666

我该怎么写这个?

标签: ms-access

解决方案


您可以使用 MOD 获取数字的最后 5 个,因此查询如下所示:

SELECT T1.NAME, COALESCE(T2.CITY, T3,CITY) AS CITY
FROM TABLE1 T1
LEFT JOIN TABLE2 T2 ON T1.ID = T2.ID
LEFT JOIN TABLE2 T3 ON MOD(T1.ID,100000) = MOD(T2.ID,100000)

推荐阅读