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

Interroger la longitude et la latitude dans MySQL

Vous devriez rechercher la formule Haversine, mais un bon début pourrait être :

Citant la première URL :

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.

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;