Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment trouver l'emplacement le plus proche en utilisant la latitude et la longitude de la base de données SQL ?

Rechercher des emplacements à proximité avec MySQL

Voici l'instruction SQL qui trouvera les 20 emplacements les plus proches situés dans un rayon de 25 miles par rapport à la coordonnée 37, -122. Il calcule la distance en fonction de la latitude/longitude de cette ligne et de la latitude/longitude cible, puis ne demande que les lignes où la valeur de distance est inférieure à 25, ordonne l'ensemble de la requête par distance et la limite à 20 résultats. Pour effectuer une recherche en kilomètres au lieu de miles, remplacez 3959 par 6371.

Structure du tableau :

id,name,address,lat,lng

REMARQUE - Ici latitude =37 &longitude =-122. Donc, vous venez de passer le vôtre.

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;

Vous pouvez trouver des détails ici .