Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie finde ich den nächstgelegenen Standort mit Breiten- und Längengrad aus der SQL-Datenbank?

Orte in der Nähe mit MySQL finden

Hier ist die SQL-Anweisung, die die nächsten 20 Orte findet, die sich in einem Umkreis von 25 Meilen um die Koordinate 37, -122 befinden. Es berechnet die Entfernung basierend auf dem Breiten-/Längengrad dieser Zeile und dem Ziel-Breiten-/Längengrad und fragt dann nur nach Zeilen, in denen der Entfernungswert kleiner als 25 ist, ordnet die gesamte Abfrage nach Entfernung und begrenzt sie auf 20 Ergebnisse. Um nach Kilometern statt nach Meilen zu suchen, ersetzen Sie 3959 durch 6371.

Tabellenstruktur :

id,name,address,lat,lng

HINWEIS - Hier Breitengrad =37 und Längengrad =-122. Also geben Sie einfach Ihr eigenes weiter.

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;

Details finden Sie hier .