前端之家收集整理的这篇文章主要介绍了
sql – 如何为每个键值选择具有最新时间戳的行?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一张传感器数据表.每行都有一个传感器ID,一个时间戳和其他字段.我想为每个传感器选择一个具有最新时间戳的行,
包括一些其他字段.
我认为解决方案是按传感器ID进行分组,然后按max(timestamp)顺序排序,如下所示:
SELECT sensorID,timestamp,sensorField1,sensorField2
FROM sensorTable
GROUP BY sensorID
ORDER BY max(timestamp);
这给了我一个错误,说“sensorField1必须出现在group by子句中或者在聚合中使用”.
解决这个问题的正确方法是什么?
为了完整起见,这是另一种可能的
解决方案:
SELECT sensorID,sensorField2
FROM sensorTable s1
WHERE timestamp = (SELECT MAX(timestamp) FROM sensorTable s2 WHERE s1.sensorID = s2.sensorID)
GROUP BY sensorID;
我认为非常自我解释,但如果你愿意,可以提供更多信息,以及其他例子.它来自MysqL手册,但上面的查询适用于每个RDBMS(实现sql’92标准).
原文链接:https://www.f2er.com/mssql/83698.html