我们有查询:
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子句中。
我的问题有什么解决方案。提前谢谢。
答案 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