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

Truy vấn MySQL cho các tọa độ kinh độ và vĩ độ nằm trong bán kính một dặm nhất định

Định luật hình cầu của công thức cosin
(37 và -122 là vĩ độ và kinh độ của tâm bán kính của bạn)

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
    * cos( radians( long ) - radians(-122) ) + sin( radians(37) ) * sin(radians(lat)) ) ) AS distance 
FROM myTable
HAVING distance < 50
ORDER BY distance 

Tính năng

  • Nhanh nhất
  • Độ chính xác tương tự như Công thức Harvesine

Công thức Haversine

SELECT id, 3959 * 2 * ASIN(SQRT(POWER(SIN((37 - abs(lat)) * pi()/180 / 2), 2)
       + COS(37 * pi()/180 ) * COS(abs(lat) * pi()/180)
       * POWER(SIN((-122 - long) * pi()/180 / 2), 2) )) as  distance
FROM myTable
HAVING distance < 50
ORDER BY distance

Tính năng

  • Nhanh
  • Mạnh mẽ hơn đối với lỗi dấu chấm động

Lưu ý rằng 3959 là bán kính Trái đất tính bằng dặm . Bán kính trái đất tính bằng km (km):6371

Bạn có thể tìm thêm thông tin tại đây




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để tạo một trường NULL bằng MySQL GUI Tools?

  2. Truy vấn MySQL XML

  3. In truy vấn thực tế MySQLdb chạy?

  4. CHÈN SỐ LƯỢNG LỚN trong MYSQL

  5. Cách hiển thị hình ảnh từ cơ sở dữ liệu bằng php