我的桌子有纬度和经度
Lat Longitude
40.8151 -73.0455 U 36103
40.8132 -73.0476 U 36103
所以我想要的是我从我的页面传递两个经度和纬度我如何使用存储过程找到最近的地方我没有太多的手,所以我必须在这里问一下
尝试使用这个
( 3959 * acos( cos( radians(37) ) * cos( radians( @latitude ) ) * cos( radians( @longtitude ) - radians(-122) ) + sin( radians(37) ) * sin( radians( @latitude ) ) ) )
但是我必须将它与表值匹配,那么我该如何实现呢?
答案 0 :(得分:5)
SELECT ROUND(6371 * acos(cos(radians('lat')) * cos(radians(latitude)) * cos(radians(longitude) - radians('long')) + sin(radians('lat')) * sin(radians(latitude)))) as distance,latitude,longitude, from your_table HAVING distance<=20 order by distance
您可以在SQL中使用类似于上面显示的查询,其中'lat'
和'long'
是您要传递以搜索的变量值。 'longitude'
和'latitude'
是您表格中的列名。顺便说一句,这被称为Haversine公式,常数6371
用于获取KM中的距离,而3959
用于获取英里距离。您可以根据自己的要求使用其中任何一个。