我有以下2个表格:
参与者
deviceid,名称
DeviceLocation
deviceid,gpslocation,timestamp
每隔几分钟就会使用设备的最新GPS位置填充DeviceLocation表。
如何使用最新时间戳获取所有设备的列表以及相应的gps位置和参与者名称?
答案 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;