Como fugir com campo de não-agrupamento em HAVING
Pergunta
Ao executar em ONLY_FULL_GROUP_BY Modo, eu recebo o erro "não agrupar-campo 'distância' é usado em TER cláusula" ao executar a seguinte consulta. A consulta conta a quantidade de hotéis que estão dentro de 15 km de distância de uma determinada latitude e longitude. Existe uma maneira de reescrever essa consulta para que eu não recebo o erro mais no ONLY_FULL_GROUP_BY Modo?
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
Solução
Alterar o TENDO a um adicional cláusula WHERE:
WHERE `lng` BETWEEN 4.56 AND 5.08 AND `lat` BETWEEN 52.22 AND 52.65
AND `distance` < 15
Eu não tenho certeza se MySQL suporta usando o nome da coluna alias na cláusula WHERE (distance
neste caso). Se não, basta alterá-lo para:
AND (foo * 100) < 15
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow