0

在 StackOverflow 的帮助下,我有一个有效的 MySQL 查询。进行一些更改后,它返回zipdistance。我一直在尝试创建一个函数来为给定的 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。感谢您的帮助。

4

1 回答 1

0

如果您的 SELECT 语句返回两个值,那么您应该使用带有 INTO 子句的 SELECT 语句,例如 -

BEGIN
  DECLARE a, b INT;
  SELECT MIN(column1), MAX(column1) INTO a,b FROM table;
END
于 2012-07-26T06:45:49.713 回答