2012-02-12 5 views
1

나는 다음과 같은 레이아웃 테이블 tbldevicevaluelog 있습니다MySQL의 쿼리 그룹 최신 삽입

ts 타임 스탬프입니다
id | ts | dc | data1 | data2 

, dc가 devicecode이다. data1data2이 최신 값입니다.

총 130 개의 다른 장치 코드가 있습니다.

목표는 각 사용 가능한 장치 코드에서 최신 시간과 data1을 얻는 것입니다.

아래 쿼리를 통해 장치 코드와 최신 시간을 알 수 있습니다.

SELECT dc, MAX(ts) FROM tbldevicevaluelog GROUP BY dc 

문제는 방법이 최신 시간에 속하는되는 data1를 얻는 것입니다?

+0

노력이'TS = 최대 (TS)' –

답변

1

결과를 동일한 장치 코드 및 타임 스탬프로 테이블에 다시 결합하십시오.

SELECT tg.dc, tg.latest, t.data1 
FROM tbldevicevaluelog t 
JOIN 
(SELECT dc, MAX(ts) as latest FROM tbldevicevaluelog GROUP BY dc) tg 
ON tg.dc=t.dc AND tg.latest=t.ts 
+0

덕분에 위대한 작품을 경우, tbldevicevaluelog에서 TS를 직류를 선택! – user1204912