1

这可能很简单,但我是 SQL 新手。我有一个包含 3 列的地址表:城市、州、邮政编码。我希望能够提取一个特定城市的列表,每个城市都与一个特定的州配对,所以我写了一个这样的查询:

select ZIPCode from USZipCodes where 
(CityName='New York' and StateAbbr='NY') or 
(CityName='Philadelphia' and StateAbbr='PA') 

但是,我需要为 100 多个城市/州对的列表重复此操作,所以我想知道如何简化此操作?

4

2 回答 2

0

用所有这些对创建一个查找表可能值得您花时间,然后在您的查询中您只需JOIN查找该查找表:

select ZIPCode 
from USZipCodes a
JOIN pairs b
 ON a.CityName = b.CityName
 AND a.StateAbbr = b.StateAbbr

但除此之外,你所拥有的一切都很好。

我建议使用 Excel 来构造 sql,因为你要列出的东西太多了。

也可能没有多少对需要明确定义,即:纽约,科罗拉多州可能不是问题,要找到列表对的流行度和潜在限制需求,您可以检查哪些城市有多个州缩写:

SELECT CityName
FROM USZipCodes
GROUP BY CityName
HAVING COUNT(DISTINCT StateAbbr)>1
于 2013-09-03T18:21:28.623 回答
0

如果您的数据库支持它,您可以使用元组语法。

select CityName, StateAbbr, ZIPCode 
from USZipCodes 
where (CityName, StateAbbr) IN (
    ('New York', 'NY') ,
    ('Philadelphia','PA') 
)
于 2017-12-18T23:44:05.163 回答