2017-03-20 4 views
0

をDEVICEID:私はHERESに、SQL、各UNITIDのための最後の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 

はそれぞれ一意ID

+2

MySQLまたはMS SQL Serverを使用していますか? (含まれていない製品にはタグを付けないでください) – jarlh

+1

'limit'句が存在しないため、' SQL Server'タグが削除されました – Rahul

答えて

0
の最後のdevicetimeを取得するには、ワットをtheresのあなたは少しずつ 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 
0

A Sあなたはpositions(deviceid, devicetime)にインデックスをしたいのパフォーマンスを得るために

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; 

:これを行うにはimple方法はwhere句です。

関連する問題