1

我有以下两个表:

devices

在此处输入图像描述

tracking

在此处输入图像描述

我需要构建一个 MySQL 查询,它将返回所有具有最新纬度和经度的设备。可以通过仅获取具有最新时间戳值的每个设备的跟踪行来挑选最新的行。我无法自己构建此查询。请帮忙。

输出列: devices.Name、devices.IMEI、tracking.latitude、tracking.longitude

谢谢

4

2 回答 2

3

从跟踪中获取顶级数据

select *
from   tracking join (select imei, max(ctimestamp) as maxtime
                      from tracking
                      group by imei) as sub
       on sub.imei = tracking.imei
          and sub.ctimestamp = tracking.timestamp

您当然可以加入设备表并自己打印名称

于 2013-02-17T10:46:41.073 回答
2

应该这样做,使用左连接来确保没有更新的行;

SELECT d.name, d.IMEI, t.latitude, t.longitude
FROM devices d
JOIN tracking t 
    ON d.IMEI=t.IMEI
LEFT JOIN tracking t2
     ON d.IMEI=t2.IMEI
    AND t2.ctimestamp>t.ctimestamp
WHERE t2.IMEI IS NULL

用于测试的 SQLfiddle

于 2013-02-17T11:00:59.743 回答