mysql - 如何从 2 个表中进行选择并从一个表中获取最高值?

标签 mysql greatest-n-per-group

对于这种情况,我很难想出 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/

相关文章:

mysql - 简化内连接查询

java - 如何从由字节数组组成的字符串中访问字节数组?

mysql - SQL排序不遵循group by语句,一直使用主键

sql - 获得 10 个不同的项目以及相关任务的最新更新

php - 如何在codeigniter中插入除id之外的唯一表数据?

php - 如何在 2 个不同的 PHP 进程之间共享 MySQL 连接

MySql Match() bool 模式下的反对

mysql - 如果我按最大数量选择并按名称分组,我如何获取标识符?

sql - 从表中的几个系列中的每一个中获取最后一行

sql - 帮助编写需求查询的方法