我要实现的是,对于每个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
答案 0 :(得分:0)
我的代码中有一些错误。
此后,我确实获得了最接近的航路点,仅此而已,现在我可以使用GROUP BY Trail_part_id并获得预期的结果。