PHP MySQL如何计算行之间的距离?

我有一张这样的桌子:

stepID   | UserID| Date        | Lat        | Lng
1        |1      | 2019-10-11  | -7.2905838 | 112.5655568
2        |1      | 2019-10-11  | -7.2349607 | 112.6106177
3        |1      | 2019-10-11  | -7.2345435 | 112.6112432
4        |1      | 2019-10-12  | -7.2529265 | 112.6542999

我需要计算用户在同一天被访问的距离(例如2019-10-11)。因此,将在PHP页面上显示的是(以下KM数量为示例):

From step 1 to 2: 2 KM
From step 2 to 3: 3 KM
From step 3 to 4: 3 KM
TOTAL FOR TODAY: 8 KM

我进行了谷歌搜索,也搜索了这个stackoverflow的历史记录,但是没有发现今天遇到的情况。需要您的建议如何查询此。 一直以来,谢谢你,GBU。

Davids168 回答:PHP MySQL如何计算行之间的距离?

这不是MySQL的最佳任务。最好以任何编程语言通过从DB 1乘1读取行来执行它。 但是,如果您想完全使用MySQL,则应使用类似的方法(假设StepID是无间隙的连续数字):

SELECT UserID,SUM(km) total
FROM (
  SELECT t1.UserID,DEGREES(ACOS(LEAST(1.0,COS(RADIANS(t1.Lat))
         * COS(RADIANS(t2.Lat))
         * COS(RADIANS(t1.Lon- t2.Lon))
         + SIN(RADIANS(t1.Lat))
         * SIN(RADIANS(t2.Lat))))) km
  FROM table t1
  JOIN table t2 ON t1.UserID = t2.UserID and t1.StepID = t2.StepID - 1
) t
GROUP BY UserID

我从https://stackoverflow.com/a/24372831/2244262

得到了公式
本文链接:https://www.f2er.com/3052752.html

大家都在问