mysql - 如何在mysql中为每辆车选择一条记录

标签 mysql laravel

我在这里遇到了一个令人困惑的情况...mysql 中有一个表,如下所示:

                    ----locations----
+--------------------------------------------------------+
|  id  |    time    |    lat    |    lon     | vehicle_id|
|   1  | 1513865119 |13.0398796 | 77.6242876 |     1     |
|   2  | 1513865119 |13.0398796 | 77.6242876 |     1     |
|   3  | 1513865119 |13.0398796 | 77.6242876 |     2     |
|   4  | 1513865119 |13.0398796 | 77.6242876 |     2     |
|   5  | 1513865119 |13.0398796 | 77.6242876 |     4     |
|   6  | 1513865119 |13.0398796 | 77.6242876 |     3     |
|   7  | 1513865119 |13.0398796 | 77.6242876 |     2     |
|   8  | 1513865119 |13.0398796 | 77.6242876 |     3     |
|   9  | 1513865119 |13.0398796 | 77.6242876 |     3     |
|  10  | 1513865119 |13.0398796 | 77.6242876 |     1     |
+--------------------------------------------------------+

我正在尝试获取每个vehicle_id的最后已知位置

这是我尝试过的:

SELECT * FROM `locations` ORDER BY id DESC limit 1

但是上面的代码只返回一辆车。

我需要以类似的方式检索所有车辆,那么我该如何做到这一点?

提前致谢。

最佳答案

这似乎是您想要的查询:

SELECT t1.*
FROM locations t1
INNER JOIN
(
    SELECT vehicle_id, MAX(time) AS max_time
    FROM locations
    GROUP BY vehicle_id
) t2
    ON t1.vehicle_id = t2.vehicle_id AND
       t1.time = t2.max_time;

这会将您的 locations 表连接到一个子查询,该子查询查找每辆车的最新记录。我在上面使用“似乎”是因为您的样本数据(也许是巧合)显示每辆车的确切时间相同。当然,为了让我的答案有意义,您需要为每辆车的最新记录提供更大的时间值。

关于mysql - 如何在mysql中为每辆车选择一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48265738/

相关文章:

Laravel Scout v.s. MySQL全文索引?

php - Laravel 服务容器是否可以绑定(bind)到类及其所有祖先 - 就像在 Symfony 中一样

php - 两个 MySQL 结果集到一个嵌套数组

mysql - Slick 2.1.0 和 Traits 中的外键关系

PHP+MYSQL_locks .....请帮忙.....我被困在这个..?

laravel - voyager - (Symfony\Component\Console\Exception\CommandNotFoundException] "voyager"命名空间中没有定义命令)

javascript - 由 laravel 发送的数组在我从 javascript 使用它时变得向后

php - 如何在 Laravel 表单验证错误消息中提供自定义字段名称

mysql - 获取按日期分组的具有日期时间的对象 ID 组

php - mysql仅在post包含数据的情况下更新数据