带有计算MIN的SQL查询,请求其他列返回所有行

时间:2012-05-20 01:24:28

标签: sql sql-server-2008 group-by latitude-longitude min

我们有查询:

SELECT ID, MIN(SQRT(POW((100-x),2)) + POW((150-y),2)) AS distance 
FROM cabstands 
GROUP BY ID

找出坐标系中点100,150的最近点的ID。如果我没有请求ID并尝试仅获取距离,则查询将返回true值。但是,如果我请求ID(如上面的查询),它将返回所有点,因为GROUP BY。如果我没有放置GROUP BY,它只是不允许我执行查询:

  

ID在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

我的问题有什么解决方案。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用:

SELECT TOP 1 ID, MIN(SQRT(POW((100-x),2)) + POW((150-y),2)) AS distance FROM cabstands GROUP BY ID ORDER BY distance ASC

或者对于MySQL:

SELECT ID, MIN(SQRT(POW((100-x),2)) + POW((150-y),2)) AS distance FROM cabstands GROUP BY ID ORDER BY distance ASC LIMIT 1