Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何获取每个设备ID的最后时间_Mysql_Sql - Fatal编程技术网

Mysql 如何获取每个设备ID的最后时间

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

我正在尝试获取每个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有一个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
标记,因为不存在
限制
子句