无主键关联时,如何根据ZIP匹配获取对应FrCode的SQL实现
解决方案:基于区间匹配关联两张无主键表
需求:匹配TABLE2中ZIP字段落在TABLE1的Zstart与ZEnd区间内的记录,获取对应的FrCode,两张表无主键可直接关联。
实现SQL语句
SELECT t2.ID, t2.NAME, t2.ZIP, t1.FrCode FROM TABLE2 t2 LEFT JOIN TABLE1 t1 ON t2.ZIP BETWEEN t1.Zstart AND t1.ZEnd;
说明
- 使用
LEFT JOIN可以保留TABLE2的所有记录,即使没有匹配到TABLE1的区间(此时FrCode为NULL);如果只需要保留有匹配的记录,将LEFT JOIN替换为INNER JOIN即可。 - 通过
ON子句直接指定区间匹配条件t2.ZIP BETWEEN t1.Zstart AND t1.ZEnd,不需要依赖主键关联,直接基于字段值的区间关系完成批量匹配。
测试结果
根据提供的测试数据,执行上述SQL后会得到以下结果:
| ID | NAME | ZIP | FrCode |
|---|---|---|---|
| 1 | XXX | 35864 | AW |
| 2 | CCC | 25758 | NULL |
| 3 | FFF | 87526 | SR |
内容的提问来源于stack exchange,提问作者IsaacMis
相关产品推荐
相关产品推荐

