Hallo,
Die Abarbeitungsreihenfolge der Klauseln ist: FROM (mit Joins), WHERE, GROUP BY, jetzt erst kommt das SELECT, ORDER BY, LIMIT. Das WHERE hat keine Ahnung von den Aliasnamen im SELECT. Sie können dort nicht verwendet werden. Du kannst dich da nur auf den Feldnamen beziehen. (Aliasnamen von Tabellen können angegeben werden, weil FROM ja schon behandelt wurde.)
Ich möchte hier ergänzen, dass man sich mal mit HAVING beschäftigen kann:
SELECT city.location_name, city.lat, city.lon, ROUND( (acos(sin(radians(city.lat)) * sin(radians(56.0)) + cos(radians(city.lat)) * cos(radians(56.0)) * cos(radians(18.0) - (radians(city.lon)))) * 6380), 1) AS linear_distance FROM city HAVING linear_distance <= 10000 ORDER BY linear_distance
Viele Grüße Siri