题
当执行在 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
不隶属于 StackOverflow