我的桌子上摆满了公交车站。每个停靠点都有一个line_id、一个方向和坐标(lat 和 lng)。
我希望我的查询返回每条线/方向的最近站点。
SELECT * from stops GROUP BY CONCAT(line_id, direction)
该查询按预期对我的停靠点进行分组。另一部分比较棘手(返回最近的停靠点),因为我正在使用计算距离(我在这里替换了一些变量)
SQRT(POW(111.1819*(45.54182-lat),2)+POW(64.7938007101048*(-73.62934-lng),2))
我试过做一个 INNER JOIN 但没有运气(我已经替换了距离公式):
SELECT distance-formula as distance1, s1.* from stops s1 INNER JOIN
(SELECT MIN(distance-formula) AS distance2, line_id, direction FROM stops GROUP BY CONCAT(line_id, direction)) s2
ON (s1.line_id = s2.line_id AND s1.direction = s2.direction AND s1.distance1 = s2.distance2)
但我在“on 子句”错误中不断收到未知列“distance1”。
我研究了其他选项,但在查询中计算距离这一事实似乎是一个真正的交易破坏者。我有哪些选择?我需要我的查询尽可能快。