0

StackOverflow の助けを借りて、動作する MySQL クエリがあります。いくつかの変更を加えた後、 と が返さzipれますdistance。指定された緯度と経度の値のパラメーターを設定し、他のテーブルから zip を返す関数を作成しようとしています。ただし、クエリは 2 つの値を返します。必要なのは 1 つだけです。

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 ステートメントが 2 つの値を返す場合、SELECT ステートメントを INTO 句と共に使用する必要があります。

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