【发布时间】:2021-07-17 11:59:39
【问题描述】:
我在 MySQL 数据库中有两个表 - Sensors 和 Measurements 其中 'sensor_id' 是进行测量的传感器的 ID,'value' 是测量值,'measured' 是 Unix 时间(值是什么时候测量)。我想从 Sensors 表中获取每个传感器的最后测量值,因此在此示例中,从 Measurements 表中获取最后 3 行:
id sensor_id value measured
22 1000000000000001 10.20 1619166847821
23 0100000000000001 67.00 1619166847827
24 0000000000000001 3.05 1619166847830
我尝试过类似SELECT MAX(m.id) as id, m.sensor_id, m.value, MAX(m.measured) as measured FROM Measurements m JOIN Sensors s ON m.sensor_id=s.id GROUP BY s.id; 的方法,它适用于“id”和“measured”,但不适用于“value”:
id sensor_id value measured
22 1000000000000001 23.00 1619166847821
23 0100000000000001 47.00 1619166847827
24 0000000000000001 3.03 1619166847830
有什么想法吗?谢谢!
【问题讨论】:
-
您可以使用窗口功能。或者您可以在子查询中根据
sensor_id获得最大的measured,并从表的另一个副本中检索相应的行。