Tìm vị trí lân cận với MySQL
Đây là câu lệnh SQL sẽ tìm 20 vị trí gần nhất nằm trong bán kính 25 dặm tính đến tọa độ 37, -122. Nó tính toán khoảng cách dựa trên vĩ độ / kinh độ của hàng đó và vĩ độ / kinh độ mục tiêu, sau đó chỉ yêu cầu các hàng có giá trị khoảng cách nhỏ hơn 25, sắp xếp toàn bộ truy vấn theo khoảng cách và giới hạn ở 20 kết quả. Để tìm kiếm theo ki lô mét thay vì dặm, hãy thay thế 3959 bằng 6371.
Cấu trúc bảng:
id,name,address,lat,lng
LƯU Ý - Ở đây vĩ độ =37 &kinh độ =-122. Vì vậy, bạn chỉ cần vượt qua của riêng bạn.
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) *
cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) *
sin( radians( lat ) ) ) ) AS distance FROM your_table_name HAVING
distance < 25 ORDER BY distance LIMIT 0 , 20;
Bạn có thể tìm chi tiết tại đây .