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

Como encontrar o local mais próximo usando latitude e longitude do banco de dados SQL?


Encontrar locais próximos com MySQL

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.

Estrutura da tabela:
id,name,address,lat,lng

NOTA - Aqui latitude =37 e longitude =-122. Então você apenas passa o seu próprio.
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;

Você pode encontrar detalhes aqui .