我有以下两个表:
devices
:
tracking
:
我需要构建一个 MySQL 查询,它将返回所有具有最新纬度和经度的设备。可以通过仅获取具有最新时间戳值的每个设备的跟踪行来挑选最新的行。我无法自己构建此查询。请帮忙。
输出列: devices.Name、devices.IMEI、tracking.latitude、tracking.longitude
谢谢
我有以下两个表:
devices
:
tracking
:
我需要构建一个 MySQL 查询,它将返回所有具有最新纬度和经度的设备。可以通过仅获取具有最新时间戳值的每个设备的跟踪行来挑选最新的行。我无法自己构建此查询。请帮忙。
输出列: devices.Name、devices.IMEI、tracking.latitude、tracking.longitude
谢谢
从跟踪中获取顶级数据
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
您当然可以加入设备表并自己打印名称
应该这样做,使用左连接来确保没有更新的行;
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