在StackOverflow的帮助下,我有一个可用的MySQL查询。进行一些更改后,它会返回zip
和distance
。我一直在尝试创建一个Function来为给定的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。谢谢你的帮助。
答案 0 :(得分:0)
如果SELECT语句返回两个值,那么应该将SELECT语句与INTO子句一起使用,例如: -
BEGIN
DECLARE a, b INT;
SELECT MIN(column1), MAX(column1) INTO a,b FROM table;
END