我正在尝试获取每个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的最后一个设备时间
答案 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)
上的索引。