Mysql
 sql >> Database >  >> RDS >> Mysql

Interrogazione all'interno di longitudine e latitudine in MySQL

Dovresti cercare la formula Haversine, ma un buon inizio potrebbe essere:

Citando dal primo URL:

Ecco l'istruzione SQL che troverà le 20 posizioni più vicine che si trovano entro un raggio di 25 miglia dalla coordinata 37, -122. Calcola la distanza in base alla latitudine/longitudine di quella riga e alla latitudine/longitudine target, quindi richiede solo le righe in cui il valore della distanza è inferiore a 25, ordina l'intera query in base alla distanza e la limita a 20 risultati. Per cercare per chilometri anziché per miglia, sostituisci 3959 con 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;