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

时间:2016-06-29 02:06:36

标签: sql-server

我有一张表格,其中包含以下扁平信息:

TRACT, ZIP, CITY, County, States

从右到左坐标为每列的一对多关系:1个Zip中的多个Tracts,一个城市中的多个Zips,一个县中的许多城市等等。

我的目标:我有一个Zip。使用这个Zip,我需要这个Zip所在县的所有Zips(包含)。所以从Zip获取县然后在县里要求所有的Zips。

我的问题:因为表是扁平的并且是非规范化的,所以我遇到了DISTINCT的问题,这会增加查询表的时间,否则会导致多个Zips副本(引用非规范化)。

有没有人知道如何一起抓住这个?

值得注意的是,在我向其添加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
    )
)

感谢。

1 个答案:

答案 0 :(得分:0)

我相信这是最好的方法,假设每个Zip只存在于一个县。

distinct

除非您想要重复结果,否则您需要{{1}}。