Tính khoảng cách giữa hai tọa độ thực ra không quá khó với công thức hasrsine.
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
Những thay đổi cần thiết so với câu trả lời ban đầu:
-
Hằng số được cung cấp trong câu trả lời ban đầu cung cấp các giá trị cho dặm hoặc km. Tôi đã thay đổi hằng số ở đây để làm việc với mét.
-
Các hằng số đã thay đổi để sử dụng tọa độ của bạn. Bạn có thể muốn điều chỉnh truy vấn thêm một chút để tạo các tham số đó thay vì hằng số.
-
having
biểu thức đã thay đổi một chút để phản ánh mong muốn của bạn trong 500 mét. Một lần nữa, đây có thể là thứ bạn muốn tham số hóa.