首页 > 解决方案 > 如何为给定的 CityTown 获取每个 StreetName 的 1 个实例

问题描述

我有数千条记录iAddress表。示例图像如下所示。如果看不到图像,我还在下一行包含了表格的文本列表示。

身份证 | 无 | 取消类型 | 公民号 | CivNoSuffix | 街道名称 | 标准目录 | 城市小镇 | 省 | 电脑 | 城市 ID

我需要一个查询,该查询将只返回给定县中给定 CityTown 的每个 StreetName 的一个实例,然后将其绑定到下拉列表。

我目前正在使用以下查询,我认为它正在工作,但最近注意到在大型返回集中,列表中缺少一些 StreetName 实例。关于如何改进以使查询返回 100% 准确结果的任何想法?

SELECT * FROM iAddress WHERE CtyId=@CI AND CityTown=@CT AND ID in (Select max(ID) FROM iAddress group by StreetName) Order By StreetName

地址表

标签: sql-server

解决方案


如果您只需要 StreetName 绑定到下拉菜单,那么也许

SELECT StreetName
FROM iAddress
WHERE CtyId = @CI AND CityTown = @CT
GROUP BY StreetName
ORDER BY StreetName

否则,您现在使用的 ID 可能来自错误的城市。MAX(ID) 需要仅用于您想要的城镇。

SELECT * 
FROM iAddress 
WHERE ID in (
    Select max(ID) 
    FROM iAddress 
    WHERE CtyId = @CI AND CityTown = @CT
    group by StreetName) 
Order By StreetName

推荐阅读