计算距离,每个Trail_part_id仅获得一个结果

时间:2020-07-29 17:57:24

标签: mysql sql

我要实现的是,对于每个Trail_part_id仅获得最接近的结果。但是我被卡住了,我尝试使用GROUP BY Trail_part_id,但是由于收到以下错误消息,所以它也不起作用:

SELECT列表不在GROUP BY子句中,并且包含未聚合的列'p.latpoint',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by

不兼容

我知道我缺少一些东西,请把我朝正确的方向。

SELECT DISTINCT(trail_part_id),
                  111.045 * DEGREES(ACOS(COS(RADIANS(latpoint))
                      * COS(RADIANS(latitude))
                      * COS(RADIANS(longpoint) - RADIANS(longitude))
                      + SIN(RADIANS(latpoint))
                      * SIN(RADIANS(latitude)))) AS distance_in_km
FROM waypoints
JOIN (SELECT ' . $latitude . '  AS latpoint,  ' . $longitude . ' AS longpoint) AS p
ORDER BY distance_in_km ASC

1 个答案:

答案 0 :(得分:0)

我的代码中有一些错误。

  1. 正如@a_horse_with_no_name所述,DISTINCT不是函数。所以我删除了它。
  2. 我要做的是通过用MIN()包装来选择“ distance_in_km”的最小值。

此后,我确实获得了最接近的航路点,仅此而已,现在我可以使用GROUP BY Trail_part_id并获得预期的结果。