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

MySQL Great Circle Distance (formula Haversine)

Da Domande frequenti su Google Code - Creazione di un Store Locator con PHP, MySQL e Google Maps :

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;