假设我有3种不同的ZIP
91000
91200
91500
我有3个不同的范围
91000 - 91199
91200 - 91499
91500 - 95000
95001 - 96000
如何撰写帮助我将邮政编码分配到相应范围的查询?问题是我的邮政编码来自表A,我需要在表B中查找zip,但表B只包含范围,而不是实际的ZIP。所以我不能在表A和B之间进行连接。
我尝试了以下但是它没有用。非常感谢!
select * from data.zip a
where (select zip_cd from data.mkt_zip b
where zip_cd in ('91000','91200','91500')) between from_zip_cd and to_zip_cd
答案 0 :(得分:0)
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
你的语法错了。
查看SQL BETWEEN运算符here
答案 1 :(得分:0)
您需要使用正确的连接条件join
这两个表:
select a.zip_cd, b.from_zip_cd, b.to_zip_cd
from zip a
join mkt_zip b on a.zip_cd between b.from_zip_cd and b.to_zip_cd
输出:
ZIP_CD FROM_ZIP_CD TO_ZIP_CD
------ ----------- ----------
91000 91000 91199
91200 91200 91499
91500 91500 95000
当然,您可以在where
子句中使用其他过滤器,或者在join
条件下使用
select a.zip_cd, b.from_zip_cd, b.to_zip_cd
from zip a
join mkt_zip b on a.zip_cd between b.from_zip_cd and b.to_zip_cd
where a.zip_cd in ('91000', '91500')
select a.zip_cd, b.from_zip_cd, b.to_zip_cd
from zip a
join mkt_zip b on a.zip_cd between b.from_zip_cd and b.to_zip_cd
and a.zip_cd in ('91000', '91500')