2009-09-22 24 views
1

ONLY_FULL_GROUP_BY模式下执行,我得到的错误执行以下查询时,“非分组字段‘距离’在HAVING子句使用”。该查询计算距离某个纬度&经度15公里内的酒店数量。有没有办法重写这个查询,所以我不再在ONLY_FULL_GROUP_BY模式中得到错误?如何摆脱非分组字段在HAVING子句

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 

回答

0

更改具有额外的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 
+0

MySQL不支持在WHERE中使用列别名。 – user2045006 2016-02-19 05:27:43