使用MySQL计算结果中的所有纬度和经度距离

使用MySQL计算结果中的所有纬度和经度距离,mysql,geolocation,distance,latitude-longitude,Mysql,Geolocation,Distance,Latitude Longitude,这是我当前用于计算两个纬度和经度之间的查询,但如何使用此公式或类似公式计算结果中的所有纬度和经度 SELECT ROUND(6353 * 2 * ASIN(SQRT( POWER(SIN((a.GPSLat - abs(b.GPSLat)) * pi()/180 / 2),2) + COS(a.GPSLat * pi()/180 ) * COS( abs(b.GPSLat) * pi()/180) * POWER(SIN((a.GPSLon - b.GPSLon) *

这是我当前用于计算两个纬度和经度之间的查询,但如何使用此公式或类似公式计算结果中的所有纬度和经度

SELECT ROUND(6353 * 2 * ASIN(SQRT( POWER(SIN((a.GPSLat -
      abs(b.GPSLat)) * pi()/180 / 2),2) + COS(a.GPSLat * pi()/180 ) * COS(
      abs(b.GPSLat) *  pi()/180) * POWER(SIN((a.GPSLon - b.GPSLon) *  
      pi()/180 / 2), 2) )), 2) as "Total(KM)"
from table1 a
      inner join table1 b on a.ID = 70 and b.ID = 71;
这是我的数据库Lat和Lon示例

结果按id70和id71计数


不是100%清楚你的意思,但你是说你想计算所有坐标对的距离吗?如果是,则您正在尝试进行交叉联接:

SELECT a.id, b.id , ...(your formula) from 
  (select id from Table1 
      [some join with filtered table]
       where [some predicate] ) a 
  CROSS JOIN 
  ( ... similar query to above to filter your right hand set... )b 
对不起,现在在iPad上输入所有内容都让人恼火

不要在交叉连接上或在何处应用任何标记,因为这将使交叉连接变成内部连接

这将提供所有对之间的距离

请参阅以了解优化此功能的一些方法:

与此类似,我只想计算我选择的行,例如(id69到id75),以及从id69到id75的所有距离的最终总和。您的查询非常接近!但是这个查询将选择我的所有数据库id,我需要meCheck选择id的结果,我做了编辑。在括号内的派生表中进行筛选,交叉联接后不要使用on或where语句。如果要查找一对多(从点69到所有其他点的距离),也可以在select子句中使用子查询。我可以知道查询中的
谓词是什么吗?