加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql – 如何为每个键值选择具有最新时间戳的行?

发布时间:2021-01-19 00:53:00 所属栏目:编程 来源:网络整理
导读:我有一张传感器数据表.每行都有一个传感器ID,一个时间戳和其他字段.我想为每个传感器选择一个具有最新时间戳的行,包括一些其他字段. 我认为解决方案是按传感器ID进行分组,然后按max(timestamp)顺序排序,如下所示: SELECT sensorID,timestamp,sensorField1,se

我有一张传感器数据表.每行都有一个传感器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标准).

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读