2013-02-17 88 views
1

所有設備的信息,我有如下兩個表:MySQL查詢 - 檢索與最新的時間戳值

devices

enter image description here

tracking

enter image description here

我需要構建一個MySQL查詢將返回所有設備與最新的latitu經度和緯度。通過僅獲取具有最新時間戳值的每個設備的追蹤行,可以挑選最新的行。我無法自己構建這個查詢。請幫忙。

輸出的cols: devices.Name,devices.IMEI,tracking.latitude,tracking.longitude

感謝

回答

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 for testing

+1

它的工作。非常感謝 :) – Azeem 2013-02-17 11:18:23

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 

,你一定能獲得參加頂級數據設備表和自己打印名稱

+0

它正在工作。你能請指導我怎麼能加入到這個複雜的查詢來獲取設備的名字呢?感謝你的幫助。 – Azeem 2013-02-17 11:06:18