Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да намеря най-близкото местоположение с помощта на географска ширина и дължина от SQL база данни?

Намиране на местоположения наблизо с MySQL

Ето SQL изявлението, което ще намери най-близките 20 местоположения, които са в радиус от 25 мили до координатата 37, -122. Той изчислява разстоянието въз основа на географската ширина/дължина на този ред и целевата ширина/дължина и след това пита само за редове, където стойността на разстоянието е по-малка от 25, подрежда цялата заявка по разстояние и я ограничава до 20 резултата. За да търсите по километри вместо по мили, заменете 3959 с 6371.

Структура на таблицата:

id,name,address,lat,lng

ЗАБЕЛЕЖКА - Тук географска ширина =37 и дължина =-122. Така че просто предайте своите.

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;

Можете да намерите подробности тук .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Echo/return добавя празно пространство преди променлива

  2. Най-добрият начин да се справите със съхраняването/показването на дати в различни часови зони в PHP?

  3. PyMySQL връща стари/моментни стойности/не изпълнява повторно заявка?

  4. MySQL таблица с AUTO_INCREMENT първичен идентификатор не освобождава номера след връщане назад

  5. Пренаписване на mysql select за намаляване на времето и запис на tmp на диск