使用MySQL计算两个纬度和经度之间的距离(km)
Calculate the distance(km) between two latitude and longitude using MySQL
这是 mysql 数据库中的纬度和经度示例
ID | Lat | Lon
1 | 3.1412 | 101.6865
2 | 1.2897 | 103.8501
下面的公式计算了两个Lat(纬度)和Lon(经度)之间的距离,得到了我想要的结果。但是这个公式不会从数据库中提取我的纬度和经度。请问,如何通过ID得到距离结果并计算两个纬度和经度?我的朋友告诉我使用 Join table,但我仍然没有得到答案..
SELECT ROUND(6353 * 2 * ASIN(SQRT( POWER(SIN((3.1412 -
abs(1.2897)) * pi()/180 / 2),2) + COS(3.1412 * pi()/180 ) * COS(
abs(1.2897) * pi()/180) * POWER(SIN((101.6865 - 103.8501) * pi()/180 / 2), 2) )), 2);
感谢提前
您可以加入相同的 table 两次,一次用于 ID 1,一次用于 ID 2,分配不同的别名
然后使用相关的列名
SELECT ROUND(6353 * 2 * ASIN(SQRT( POWER(SIN((a.lat -
abs(b.lat)) * pi()/180 / 2),2) + COS(a.lat * pi()/180 ) * COS(
abs(b.lat) * pi()/180) * POWER(SIN((a.lng - b.lng) * pi()/180 / 2), 2) )), 2);
from my_table a
inner join my_table b on a.id = 1 and b.id = 2
对我有用
SELECT *,(((acos(sin((12.942999*pi()/180)) * sin((`Lat`*pi()/180))+cos((12.942999*pi()/180)) * cos((`Lat`*pi()/180)) * cos(((74.82994- `Lon`)* pi()/180))))*180/pi())*60*1.1515*1.609344 ) as distance FROM ven_vendor HAVING distance <= 10
这是 mysql 数据库中的纬度和经度示例
ID | Lat | Lon
1 | 3.1412 | 101.6865
2 | 1.2897 | 103.8501
下面的公式计算了两个Lat(纬度)和Lon(经度)之间的距离,得到了我想要的结果。但是这个公式不会从数据库中提取我的纬度和经度。请问,如何通过ID得到距离结果并计算两个纬度和经度?我的朋友告诉我使用 Join table,但我仍然没有得到答案..
SELECT ROUND(6353 * 2 * ASIN(SQRT( POWER(SIN((3.1412 -
abs(1.2897)) * pi()/180 / 2),2) + COS(3.1412 * pi()/180 ) * COS(
abs(1.2897) * pi()/180) * POWER(SIN((101.6865 - 103.8501) * pi()/180 / 2), 2) )), 2);
感谢提前
您可以加入相同的 table 两次,一次用于 ID 1,一次用于 ID 2,分配不同的别名 然后使用相关的列名
SELECT ROUND(6353 * 2 * ASIN(SQRT( POWER(SIN((a.lat -
abs(b.lat)) * pi()/180 / 2),2) + COS(a.lat * pi()/180 ) * COS(
abs(b.lat) * pi()/180) * POWER(SIN((a.lng - b.lng) * pi()/180 / 2), 2) )), 2);
from my_table a
inner join my_table b on a.id = 1 and b.id = 2
对我有用
SELECT *,(((acos(sin((12.942999*pi()/180)) * sin((`Lat`*pi()/180))+cos((12.942999*pi()/180)) * cos((`Lat`*pi()/180)) * cos(((74.82994- `Lon`)* pi()/180))))*180/pi())*60*1.1515*1.609344 ) as distance FROM ven_vendor HAVING distance <= 10