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



我们有查询:

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

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

您可以使用:

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

相关内容

最新更新