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 を返すようにする必要があります。お手伝いありがとう。