检索每个键值具有最近时间戳的行
在包含传感器数据的表中,您遇到需要选择最新行的情况对于每个唯一的传感器 ID。当所需的查询由于未指定的分组而返回错误时,就会出现挑战。
要解决此问题,有两种有效的方法:
方法 1:嵌套查询
此方法利用嵌套查询来识别每个传感器的最大时间戳ID:
SELECT sensorID, timestamp, sensorField1, sensorField2 FROM sensorTable s1 WHERE timestamp = (SELECT MAX(timestamp) FROM sensorTable s2 WHERE s1.sensorID = s2.sensorID) ORDER BY sensorID, timestamp;
方法 2:窗口函数
或者,您可以在滑动窗口上利用窗口函数 MAX() 来实现所需的结果:
SELECT sensorID, MAX(timestamp) OVER (PARTITION BY sensorID ORDER BY timestamp) AS max_timestamp, sensorField1, sensorField2 FROM sensorTable ORDER BY sensorID, max_timestamp;
两种方法都有效地为每个传感器 ID 选择一行,代表最新的数据点。选择取决于具体的数据库环境和性能要求。
以上是如何高效地检索每个唯一传感器 ID 的最新传感器数据?的详细内容。更多信息请关注PHP中文网其他相关文章!