0

我们有一个查询:

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 子句中。

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

4

1 回答 1

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
于 2012-05-20T01:34:25.297 回答