我有一个带有纬度和经度的表
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 where 中使用类似于上面所示的查询'lat'
and 'long'
是您要传递用于搜索的变量值。这'longitude'
and 'latitude'
是表中的列名称。顺便说一句,这称为半正弦公式和常数6371
用于获取以 KM 为单位的距离,而3959
用于获取以英里为单位的距离。您可以根据您的要求使用其中任何一个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)