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

MySQL Great Circle Distance (fórmula de Haversine)

De Preguntas frecuentes sobre Google Code:creación de Localizador de tiendas con PHP, MySQL y Google Maps :

Aquí está 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 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;