Mysql实现根据经纬度查询周围的商户并按距离进行排序
SELECT*,(6371 * acos (cos ( radians( 34.21702164242081 ) )* cos( radians( latitude ) )* cos( radians( longitude ) - radians( 113.76823781349185 ) )+ sin ( radians( 34.21702164242081 ) )* sin( radians
·
SELECT
*,(
6371 * acos (
cos ( radians( 34.21702164242081 ) )
* cos( radians( latitude ) )
* cos( radians( longitude ) - radians( 113.76823781349185 ) )
+ sin ( radians( 34.21702164242081 ) )
* sin( radians( latitude ) )
)
) AS distance //距离
FROM merchant
HAVING distance < 0.5 //筛选距离小于0.5km的商家(可不写),如果没查到数据就是没有小于0.5km的商家
ORDER BY distance //根据距离远近来排序 默认升序 (可不写)
LIMIT 0 , 10; //显示前10条数据(可不写)
我的用php所以附上laravel框架版本
$latitude = 34.21702164242081;
$longitude = 113.76823781349185;
return DB::table('merchant')
->select('*', DB::raw(
'6371 * acos(
cos ( radians( '.$latitude.' ) )
* cos( radians ( latitude ) )
* cos( radians( longitude ) - radians( '.$longitude.' ) )
+ sin( radians( '.$latitude.' ))
* sin( radians( latitude ) )
)
as distance')
)
->having('distance','<',0.5)
->orderBy('distance')
->paginate(10);
记录一下
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献3条内容
所有评论(0)