我有一个表,它有以下扁平信息:
TRACT, ZIP, CITY, County, States
从右到左是一对多的关系:许多地区在一个Zip,许多Zip在一个城市,许多城市在一个县,等等。
我的目标:我有一个拉链。使用此Zip,我需要此Zip所在县的所有Zip(包括)。因此,从Zip中获取County,然后询问该县的所有Zip。
我的问题:因为表是扁平的和非规范化的,我在使用DISTINCT添加过多的时间来查询表时遇到了问题,否则会导致zip的多个副本(引用非规范化)。
有谁知道怎么把这个抓在一起吗?
值得注意的是,这个查询运行得非常快,直到我添加了DISTINCT:
Select ZIP
JOIN REF_GEOGRAPHY R on G.ZIP = R.Zip
and R.Zip in (
Select Zip from REF_GEOGRAPHY Where County_Key in (
Select County_Key from REF_GEOGRAPHY where Zip = 70503
)
)
谢谢。
我相信这将是最好的方法,假设每个Zip只存在于一个县。
select distinct Zip
from REF_GEOGRAPHY
where County = (select top 1 County from REF_GEOGRAPHY where Zip = 70503)
你需要distinct
,除非你想要重复的结果。