Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中传入2值(Langtutede和经度)时,如何获取以公里为单位的距离?_Mysql_Select - Fatal编程技术网

在mysql中传入2值(Langtutede和经度)时,如何获取以公里为单位的距离?

在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 =============

我在mysql调用分支中有一个表

===============================
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;