【发布时间】:2012-05-27 01:24:27
【问题描述】:
我们有查询:
SELECT ID, MIN(SQRT(POW((100-x),2)) + POW((150-y),2)) AS distance
FROM cabstands
GROUP BY ID
查找坐标系中离点100、150最近的点的ID。如果我不请求 ID 并尝试仅获取距离,则查询将返回真值。但是,如果我请求 ID(如上面的查询),它会返回所有点,因为 GROUP BY。如果我不放 GROUP BY,它根本不允许我通过以下方式执行查询:
ID 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
我的问题的解决方案是什么。提前致谢。
【问题讨论】:
-
为什么不使用
SELECT TOP 1 ... ORDER BY distance ASC? -
请用您正在使用的 DBMS 标记您的问题。这是 MySQL 还是 PostgreSQL?
-
感谢您的回复,我很确定它会以这种方式工作。我会让你知道。我已经标记了我的 DBMS,我正在使用管理工具运行 Microsoft SQL Server 2008。
标签: sql sql-server-2008 group-by latitude-longitude min