从另一个表中选择具有最大时间戳的记录

时间:2018-04-17 09:22:39

标签: mysql sql

我有以下2个表格:

参与者

deviceid,名称

DeviceLocation

deviceid,gpsl​​ocation,timestamp

每隔几分钟就会使用设备的最新GPS位置填充DeviceLocation表。

如何使用最新时间戳获取所有设备的列表以及相应的gps位置和参与者名称?

2 个答案:

答案 0 :(得分:1)

SELECT deviceid,timestamp,gpslocation,name 
FROM Participants p1
WHERE timestamp = (SELECT MAX(timestamp) FROM DeviceLocation d2 WHERE p1.deviceid = d2.deviceid)
GROUP BY deviceid;

答案 1 :(得分:0)

试试这个:

SELECT A.*, B.gpslocation, B.timestamp
FROM Participants A JOIN DeviceLocation B
ON A.deviceid=B.deviceid JOIN
(SELECT MAX(`timestamp`) max_timestamp 
 FROM DeviceLocation) C 
ON B.`timestamp`=C.max_timestamp;

我认为您可以在时间间隔内获取数据库,因为插入数据的速率可能很高。你可以尝试类似的东西:

SELECT A.*, B.gpslocation, B.timestamp
FROM Participants A JOIN DeviceLocation B
ON A.deviceid=B.deviceid 
WHERE B.`timestamp`>=NOW() - INTERVAL 10 MINUTE;