Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn trong kinh độ và vĩ độ trong MySQL

Bạn nên tìm kiếm công thức Haversine, nhưng một khởi đầu tốt có thể là:

Trích dẫn từ url đầu tiên:

Đâ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.

SELECT
    id,
    ( 3959
      * acos( cos( radians(37) )
              * cos(  radians( lat )   )
              * cos(  radians( lng ) - radians(-122) )
            + sin( radians(37) )
              * sin( radians( lat ) )
            )
    )
    AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0 , 20;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng toán tử chính xác, hoặc thích hợp hơn, không bằng trong MySQL

  2. Làm cách nào để hiển thị các ràng buộc duy nhất của một bảng trong MySQL?

  3. Đá quý Ruby mysql2 được biên dịch cho phiên bản thư viện máy khách mysql sai

  4. cấu trúc mysql cho các bài đăng và nhận xét

  5. Sắp xếp thứ tự - sử dụng dấu thời gian UNIX cho các trường DATE