半正矢関数の式を考えると、2つの座標間の距離を計算することは実際にはそれほど難しくありません。
SELECT
-- stuff here
, ( 6371000 * acos( cos( radians(45.815005) ) * cos( radians( stuff.lat ) ) * cos( radians( stuff.lng ) - radians(15.978501) ) + sin( radians(45.815005) ) * sin(radians(stuff.lat)) ) ) AS distance
FROM
stuff
HAVING
distance < 500
元の回答からの必要な変更:
-
元の回答で提供された定数は、マイルまたはキロメートルの値を提供しました。ここでは、メーターで機能するように定数を変更しました。
-
座標を使用するように定数が変更されました。クエリをもう少し調整して、定数の代わりにこれらのパラメータを作成することをお勧めします。
-
持っているコード> 500メートルへの欲求を反映して表情が少し変わりました。繰り返しますが、これはパラメータ化したいものかもしれません。