sql >> Databasteknik >  >> RDS >> Mysql

Fråga inom longitud och latitud i MySQL

Du bör söka efter Haversine-formeln, men en bra början kan vara:

Citerar från den första webbadressen:

Här är SQL-satsen som hittar de närmaste 20 platserna som ligger inom en radie av 25 miles till 37, -122-koordinaten. Den beräknar avståndet baserat på radens latitud/longitud och mållatitud/longitud, och ber sedan om endast rader där avståndsvärdet är mindre än 25, ordnar hela frågan efter avstånd och begränsar den till 20 resultat. För att söka efter kilometer istället för miles, ersätt 3959 med 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;


  1. PHP/MySQL - Bästa sättet att skapa unika slumpmässiga strängar?

  2. Analysfel:syntaxfel, oväntat (T_VARIABLE)

  3. Konfigurationsparameter work_mem i PostgreSQL på Linux

  4. CSV vs MySQL prestanda