Mysql 如何获取每个设备ID的最后时间
我正在尝试获取每个unitid的最后一个deviceTime,下面是sql:Mysql 如何获取每个设备ID的最后时间,mysql,sql,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 获取每个uniqueid的最后一个devicetime
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
获取每个uniqueid的最后一个devicetime有一个wat,您可以通过对子查询进行附加连接来稍微修改当前查询,该子查询标识每个uniqueid的最近的
devicetime
:
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
执行此操作的简单方法是在
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;
为了提高性能,您需要在
位置(deviceid、devicetime)上建立索引。
您使用的是MySQL还是MS SQL Server?(不要标记未涉及的产品。)已删除SQL Server
标记,因为不存在限制
子句