Wie zu entkommen mit Nicht-Gruppierungsfeld in HAVING-Klausel
Frage
Wenn bei der Ausführung von ONLY_FULL_GROUP_BY Modus, erhalte ich die Fehlermeldung "Nicht-Gruppierung Feld 'Abstand' in verwendet wird von Klausel", wenn Sie die folgende Abfrage ausgeführt wird. Die Abfrage zählt die Anzahl der Hotels, die innerhalb von 15 km Entfernung von einer bestimmten Breite und Länge sind. Gibt es eine Möglichkeit, diese Abfrage neu zu schreiben, so dass ich nicht mehr in ONLY_FULL_GROUP_BY Modus nicht die Fehler?
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
Lösung
Ändern Sie die HAVING auf eine zusätzliche WHERE-Klausel:
WHERE `lng` BETWEEN 4.56 AND 5.08 AND `lat` BETWEEN 52.22 AND 52.65
AND `distance` < 15
Ich bin mir nicht sicher, ob MySQL mit den Alias-Spaltennamen in der WHERE-Klausel (distance
in diesem Fall) unterstützt. Wenn nicht, nur um es zu ändern:
AND (foo * 100) < 15
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow