sql >> Databasteknik >  >> RDS >> Mysql

Google Maps geokoder för att hitta närliggande platser från MySQL-databasen

radiesökning:

select *,
    acos(cos(centerLat * (PI()/180)) *
     cos(centerLon * (PI()/180)) *
     cos(lat * (PI()/180)) *
     cos(lon * (PI()/180))
     +
     cos(centerLat * (PI()/180)) *
     sin(centerLon * (PI()/180)) *
     cos(lat * (PI()/180)) *
     sin(lon * (PI()/180))
     +
     sin(centerLat * (PI()/180)) *
     sin(lat * (PI()/180))
    ) * 3959 as Dist
from TABLE_NAME
having Dist < radius
order by Dist

3959 är jordens radie i Miles. Byt ut detta värde med radie i KM, eller någon enhet, för att få resultat på samma enhet.centerLat och centerLon är mitten av sökningen (din inmatning), medan lat och lon är fält i tabellen.



  1. Varför använder inte Postgres indexet?

  2. Hur COT() fungerar i MariaDB

  3. Hur söker man efter rader som innehåller en delsträng?

  4. PostgreSQL jokertecken LIKE för något av en lista med ord