如何获取每个设备的最后一次

时间:2017-03-20 10:25:23

标签: mysql sql

我正在尝试获取每个unitid的最后一个deviceTime,继承人sql:

select d.name,d.uniqueid,d.category as 'Company',p.devicetime,p.latitude,p.longitude
 from devices d
INNER JOIN positions p
ON d.id = p.deviceid 
order By p.devicetime desc
limit 1,2

是一个wat来获取每个uniqueid的最后一个设备时间

2 个答案:

答案 0 :(得分:0)

您可以通过对子查询进行额外加入来略微修改当前查询,该子查询为每个devicetime标识最新uniqueid

SELECT d.name,
       d.uniqueid,
       d.category AS Company,
       p.devicetime,
       p.latitude,
       p.longitude
FROM devices d
INNER JOIN positions p
    ON d.id = p.deviceid 
INNER JOIN
(
    SELECT t1.uniqueid, MAX(t2.devicetime) AS max_device_time
    FROM devices t1
    INNER JOIN positions t2
        ON t1.id = t2.deviceid
    GROUP BY t1.uniqueid
) t
    ON d.uniqueid   = t.uniqueid AND
       p.devicetime = t.max_device_time

答案 1 :(得分:0)

执行此操作的简单方法是where子句:

select d.name, d.uniqueid, d.category as Company,
       p.devicetime, p.latitude, p.longitude
from devices d join
     positions p
     on d.id = p.deviceid 
where p.devicetime = (select max(p2.devicetime)
                      from positions p2
                      where p2.deviceid = p.deviceid
                     )
order by p.devicetime desc
limit 1, 2;

对于性能,您需要positions(deviceid, devicetime)上的索引。