对于这种情况,我很难想出 SQL 语句: 想象一下在任何给定时间路上有多辆车, 这些行程中的每一个都在行程表中。 每辆车定期发送其当前位置(纬度、经度)的更新
有两个表: 当前位置
编号 |行程编号 |更新时间 |纬度|经度
旅行
编号 |状态
current_position 每次行程都有多次更新
我需要得到结果,有 trip_id, 纬度, 经度
对于每个状态为“驾驶”的行程 并且必须具有来自 当前位置
最新值我指的是 update_time 的最高值。 当我尝试 GROUP BY 时,我得到了不同的结果,但结果并不总是最新的位置。我似乎无法将 order by update_time DESC 与 GROUP BY trip_id 合并
最佳答案
听起来您想为给定的 trip_id 选择具有最大 update_time 值的 current_position 行。您可以使用 MAX 通过子查询执行此操作。
Select * from current_position
Where trip_id = @trip_id
and update_time = (Select Max(update_time) from current_position where trip_id = @trip_id)
编辑...发布后,我意识到您需要一个连接来获取相应行程状态 = '驾驶' 的所有行。我认为这会做到这一点(虽然我更喜欢 Sql Server,所以可能与我不知道的 MySQL 有一些细微差别)。
Select * from current_position cp
join trips t on cp.trip_id = t.id
where t.status = 'Driving'
and cp.update_time = (select Max(update_time) from current_position where trip_id = t.id)
关于mysql - 如何从 2 个表中进行选择并从一个表中获取最高值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8672871/