当执行在 ONLY_FULL_GROUP_BY 模式中,我得到的错误执行以下查询时的“非分组字段‘距离’是 HAVING 子句中使用的”。查询计数的酒店15公里的距离一定的纬度和经度的范围内的量。有没有一种方法来重写此查询,所以我没有得到错误了在 ONLY_FULL_GROUP_BY 的模式?

SELECT count(id) as total, (foo * 100) AS 'distance'
FROM `hotels` 
WHERE `lng` between 4.56 and 5.08 and `lat` between 52.22 and 52.65 
HAVING `distance` < 15
有帮助吗?

解决方案

更改HAVING到附加WHERE子句:

WHERE `lng` BETWEEN 4.56 AND 5.08 AND `lat` BETWEEN 52.22 AND 52.65 
AND `distance` < 15

我不知道如果MySQL支持使用WHERE子句中的别名的列名(distance在这种情况下)。如果没有,只是它更改为:

AND (foo * 100) < 15
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top