这可能很简单,但我是SQL新手。我有一个包含3列的地址表:城市,州,邮政编码。我希望能够提取每个与特定州配对的特定城市列表,所以我写了一个这样的查询:
select ZIPCode from USZipCodes where
(CityName='New York' and StateAbbr='NY') or
(CityName='Philadelphia' and StateAbbr='PA')
但是,我需要重复这个以获得100多个城市/州对的列表,所以我想知道如何简化这个?
答案 0 :(得分:0)
可能值得花时间制作包含所有这些对的查找表,然后在查询中只需JOIN
到该查找表:
select ZIPCode
from USZipCodes a
JOIN pairs b
ON a.CityName = b.CityName
AND a.StateAbbr = b.StateAbbr
但除此之外,你所拥有的一切都很好。
我建议使用Excel来构建sql,因为你有很多要列出来的。
也可能没有很多对需要明确定义,即:纽约,CO可能不是问题,找到流行并可能限制列表对的需要,你可以检查哪些城市有多个州缩写:
SELECT CityName
FROM USZipCodes
GROUP BY CityName
HAVING COUNT(DISTINCT StateAbbr)>1
答案 1 :(得分:0)
如果您的数据库支持它,您可以使用元组语法。
select CityName, StateAbbr, ZIPCode
from USZipCodes
where (CityName, StateAbbr) IN (
('New York', 'NY') ,
('Philadelphia','PA')
)