我的桌子有经度和纬度
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 ) ) ) )
但是我必须将其与表值进行匹配,所以我该如何实现呢?
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用于获取以英里为单位的距离。您可以根据需要使用它们中的任何一个。
'lat'
'long'
'longitude'
'latitude'
6371
3959