在 StackOverflow 的帮助下,我有一个有效的 MySQL 查询。进行一些更改后,它返回zip
和distance
。我一直在尝试创建一个函数来为给定的 lat 和 lng 值设置参数并从另一个表返回 zip。但是查询返回两个值,我只需要一个。
SELECT loc.zip,(((ACOS(SIN((lat*PI()/180)) * SIN((`latitude`*PI()/180))+COS((lat*PI()/180)) * COS((`latitude`*pi()/180)) * COS(((lng - `longitude`)*PI()/180))))*180/PI())*60*1.1515) AS `distance` FROM geov1.zcta loc HAVING distance < 5 LIMIT 1;
到目前为止,这就是我的功能:
BEGIN
DECLARE lat VARCHAR(15);
DECLARE lng VARCHAR(15);
DECLARE zip BIGINT;
SET zip = SELECT loc.zip,(((ACOS(SIN((lat*PI()/180)) * SIN((`latitude`*PI()/180))+COS((lat*PI()/180)) * COS((`latitude`*pi()/180)) * COS(((lng - `longitude`)*PI()/180))))*180/PI())*60*1.1515) AS `distance` FROM geov1.zcta loc HAVING distance < 5 LIMIT 1;
RETURN zip;
END
这不起作用,给我一个错误,第 10 行有一些错误,这是:
`longitude`)*PI()/180))))*180/PI())*60*1.1515) AS `distance` FROM geov1.zcta loc HAVING distance < 5 LIMIT 1;
此时我不知所措,我只需要让查询返回具有给定坐标的 zip。感谢您的帮助。