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

truy vấn kinh độ và vĩ độ mySQL cho các hàng khác trong bán kính x dặm

Đây là truy vấn tôi sử dụng trên công cụ định vị cửa hàng mà tôi làm việc với:

SELECT
    `id`,
    (
        6371 *
        acos(
            cos( radians( :lat ) ) *
            cos( radians( `lat` ) ) *
            cos(
                radians( `long` ) - radians( :long )
            ) +
            sin(radians(:lat)) *
            sin(radians(`lat`))
        )
    ) `distance`
FROM
    `location`
HAVING
    `distance` < :distance
ORDER BY
    `distance`
LIMIT
    25

:lat:long là những điểm mà người dùng đã vượt qua trong đó latlong là các điểm được lưu trữ trong cơ sở dữ liệu.

The:khoảng cách được đo bằng dặm, trong phiên bản làm việc của mã,:khoảng cách thực sự được kéo từ một trình đơn thả xuống nằm trong khoảng từ 10-50 dặm

Việc thay đổi mã để hoạt động với km có thể được thực hiện bằng cách thay đổi 3959 (khoảng cách từ trung tâm trái đất đến bề mặt của nó tính bằng dặm) thành 6371 (3959 dặm được chuyển thành km) nhờ joshhendo cho giải pháp đó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO + MySQL và mã hóa UTF-8 bị hỏng

  2. MySQL, Giúp người dùng xếp hạng

  3. Lỗi nhập MySQLdb trong Python - Mac 10.6

  4. MySQL CONVERT_TZ ()

  5. Ví dụ về MySQL REGEXP