更正了一些问题,并添加了一个替代选择-适当删除。
DELIMITER |CREATE PROCEDURE getNearestCities(IN p_cityID INT -- should this be int unsigned ?)BEGINDECLARE cityLat FLOAT; -- should these be decimals ?DECLARE cityLng FLOAT; -- method 1 SELECt lat,lng into cityLat, cityLng FROM cities WHERe cities.cityID = p_cityID; SELECt b.*, HAVERSINE(cityLat,cityLng, b.lat, b.lng) AS dist FROM cities b ORDER BY dist LIMIT 10; -- method 2 SELECt b.*, HAVERSINE(a.lat, a.lng, b.lat, b.lng) AS dist FROMcities AS a JOIN cities AS b on a.cityID = p_cityID ORDER BY dist LIMIT 10;END |delimiter ;



