如何在SQL Server中查询自引用平面表



我有一个表,它有以下扁平信息:

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,除非你想要重复的结果。

最新更新