我们有查询:
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