我有一个 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/