Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consultando dentro de longitude e latitude no MySQL


Você deve procurar a fórmula de Haversine, mas um bom começo pode ser:

Citando da primeira url:

Aqui está a instrução SQL que encontrará os 20 locais mais próximos que estão dentro de um raio de 25 milhas da coordenada 37, -122. Ele calcula a distância com base na latitude/longitude dessa linha e na latitude/longitude de destino e, em seguida, solicita apenas as linhas em que o valor da distância é menor que 25, ordena toda a consulta por distância e a limita a 20 resultados. Para pesquisar por quilômetros em vez de milhas, substitua 3959 por 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;