mysql - 获取一组数据的最新条目

标签 mysql sql sorting greatest-n-per-group

我有一个 mySQL 数据库来存储自行车的位置信息。对于“最后位置”方法,我只想获取自行车的最后一个条目,但来自所有自行车。

示例:

ID | ## LAT ## | ## LNG ## | #### TIMESTAMP #### | BIKE_ID
----------------------------------------------------------
16 | N47.68526 | E16.59032 | 2015-01-12 14:49:51 | 3
17 | N47.36345 | E16.12096 | 2015-01-12 14:50:27 | 9
18 | N44.12526 | E15.12562 | 2015-01-12 14:51:45 | 1
19 | N47.87654 | E16.54323 | 2015-01-12 14:51:51 | 3
20 | N47.12345 | E16.12341 | 2015-01-12 14:52:27 | 1
21 | N47.12531 | E15.12561 | 2015-01-12 14:52:45 | 9
22 | N44.12531 | E16.12561 | 2015-01-12 14:53:01 | 1
23 | N47.12531 | E15.12561 | 2015-01-12 14:53:18 | 9
...

我想要这样的输出:

ID | ## LAT ## | ## LNG ## | #### TIMESTAMP #### | BIKE_ID
----------------------------------------------------------
19 | N47.87654 | E16.54323 | 2015-01-12 14:51:51 | 3
22 | N44.12531 | E16.12561 | 2015-01-12 14:53:01 | 1
23 | N47.12531 | E15.12561 | 2015-01-12 14:53:18 | 9

最佳答案

首先获取一组包含每辆自行车最大时间戳的数据,然后根据自行车 ID 和最大时间戳将其连接回整个数据集。这是假设您需要基表中的其他数据。如果你不这样做,单独的内部选择就可以工作......

如果您需要表中的其他数据...

SELECT t.id AS 'ID', 
       t.lat AS '## LAT ##', 
       t.lng AS '## LNG ##', 
       t.timestamp AS '#### TIMESTAMP ####', 
       t.bike_Id AS 'BIKE_ID' 
FROM table_Name t
INNER JOIN (SELECT bike_ID, max(timestamp) mts 
            FROM tableName
            GROUP BY bike_ID) t2 
  on t2.bike_ID = t.bike_ID 
 and t2.mts = t.timestamp

如果没有...只需使用聚合...

SELECT bike_ID, 
       max(timestamp) mts 
FROM tableName
GROUP BY bike_ID

关于mysql - 获取一组数据的最新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27924478/

相关文章:

java - 将静态ArrayList中的数据插入到mySql数据库中的表中

java - Hibernate 中不必要的查询 - MySql

SQL 选择案例

sql - Postgresql 时区转换

MySQL 查询 - 通过 JSON 值获取订单 ID

java - 使用比较器排序映射导致语法错误

c++ - 分而治之算法找到最大元素的位置

PHP和Mysql,从一张表导出并导入到另一张表

php MySQL query update column into database.. 但它无法将更新的列值显示到页面中

MySQL 调试跟踪时间戳