sql >> Base de Datos >  >> RDS >> Mysql

Consultando dentro de longitud y latitud en MySQL

Debe buscar la fórmula de Haversine, pero un buen comienzo podría ser:

Citando desde la primera URL:

Esta es la instrucción SQL que encontrará las 20 ubicaciones más cercanas que se encuentran dentro de un radio de 25 millas a la coordenada 37, -122. Calcula la distancia en función de la latitud/longitud de esa fila y la latitud/longitud de destino, y luego solicita solo las filas donde el valor de distancia es inferior a 25, ordena toda la consulta por distancia y la limita a 20 resultados. Para buscar por kilómetros en lugar de millas, reemplace 3959 con 6371.

SELECT
    id,
    ( 3959
      * acos( cos( radians(37) )
              * cos(  radians( lat )   )
              * cos(  radians( lng ) - radians(-122) )
            + sin( radians(37) )
              * sin( radians( lat ) )
            )
    )
    AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0 , 20;