Skip to content

Instantly share code, notes, and snippets.

@rugbyprof
Last active February 6, 2021 23:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save rugbyprof/80da9e813b5d35fa36a8 to your computer and use it in GitHub Desktop.
Save rugbyprof/80da9e813b5d35fa36a8 to your computer and use it in GitHub Desktop.
Mysql Great Circle Distance
# Here's the SQL statement that will find the closest 20 locations that are within a radius of 25 miles
# to the 37, -122 coordinate. It #calculates the distance based on the latitude/longitude of that row
# and the target latitude/longitude, and then asks for only rows #where the distance value is less than
# 25, orders the whole query by distance, and limits it to 20 results. To search by kilometers #instead
# of miles, replace 3959 with 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;
#To search by kilometers instead of miles, replace 3959 with 6371.
#[ref](https://developers.google.com/maps/articles/phpsqlsearch_v3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment