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

Khớp kinh độ / vĩ độ gần nhất

Thanh lịch ( chính xác hơn ) cách làm này ( nhưng không nhanh chóng )

// Closest within radius of 25 Miles
// 37, -122 are your current coordinates
// To search by kilometers instead of miles, replace 3959 with 6371
SELECT feature_name, 
 ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
  * cos( radians( long ) - radians(-122) ) + sin( radians(37) ) 
  * sin( radians( lat ) ) ) ) AS distance 
FROM geo_features HAVING distance < 25 
ORDER BY distance LIMIT 1;

Chỉnh sửa

Đây là công thức Haversine để tính toán khoảng cách tròn từ tọa độ địa lý. Dưới đây là một số cách triển khai công thức này trong các nền tảng khác nhau

R = earth’s radius (mean radius = 6,371km)
Δlat = lat2− lat1
Δlong = long2− long1
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = R.c
// Note that angles need to be in radians to pass to Trigonometric functions



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lấy ngày từ cột ngày giờ trong MySQL

  2. Cách hiệu quả để mô phỏng tham gia bên ngoài đầy đủ trong MySQL?

  3. Tại sao không sử dụng thời gian tạo bản ghi làm khóa chính?

  4. Chỉ hiển thị ngày gần đây nhất từ ​​bảng MySQL đã tham gia

  5. Thêm dấu * (dấu hoa thị) cho Tìm kiếm toàn văn trong MySQL