我有一张表tbldevicevaluelog
,其中包含以下布局:
id | ts | dc | data1 | data2
ts
是时间戳,dc
是设备代码。 data1
和data2
是最新值。
总共有130种不同的设备代码。
目标是从每个可用的设备代码中获取最新时间和data1
。
通过下面的查询,我可以得到设备代码和最新时间的结果。
SELECT dc, MAX(ts) FROM tbldevicevaluelog GROUP BY dc
问题是如何获得属于最新时间的data1
?
答案 0 :(得分: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