在mysql中传入2值(Langtutede和经度)时,如何获取以公里为单位的距离?
我在mysql调用分支中有一个表在mysql中传入2值(Langtutede和经度)时,如何获取以公里为单位的距离?,mysql,select,Mysql,Select,我在mysql调用分支中有一个表 =============================== Branch_id latitude longitude =============================== 1 3.109421 101.622913 2 3.101121 101.644913 当我输入当前位置纬度/经度时,如何从该表中选择公里计算 例如: 如果我通过我的当前位置=3.122221 101.343913 =============
===============================
Branch_id latitude longitude
===============================
1 3.109421 101.622913
2 3.101121 101.644913
当我输入当前位置纬度/经度时,如何从该表中选择公里计算
例如:
如果我通过我的当前位置=3.122221 101.343913
============================================
Branch_id latitude longitude distance(km)
============================================
1 3.109421 101.622913 0.4
2 3.101121 101.644913 0.6
编辑解决:
发件人:
下面是一条SQL语句,它在一个数据库中查找最近的20个位置
距离-33151坐标25英里的半径。它计算
基于该行和目标的纬度/经度的距离
纬度/经度,然后仅要求距离
值小于25,按距离和限制对整个查询进行排序
它有20个结果。要按公里而不是英里搜索,请替换
3959和6371
是的,这是一个标准的哈弗森公式。谷歌开发者在这里有一个很好的描述:嗨,SyntaxGoonoo,我得到了我想要的,谢谢你在这里分享更多。!
SELECT p.title,p.subtitle,p.desc,p.image,p.promotion_id,p.merchant_id,p.date_from,p.date_to,m.merchant_name,p.view,mb.latitude,mb.longitude,
(6371 * acos (cos( radians(3.158704)) * cos( radians(mb.latitude))
* cos( radians(mb.longitude) - radians(101.713963)) + sin(radians(3.158704))
* sin( radians(mb.latitude)))) AS distance
FROM merchant_branch as mb
left join merchant m on mb.merchant_id = m.merchant_id
left join promotion p on p.merchant_id = m.merchant_id
where p.promotion_id is not null order by distance asc
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;