我有一个名为sensorvalue的表,如下所示:
station_id sensor_id Timestamp Value
----------------------------------------------------------
1 1 2013-09-04 12:00:00 12.2
1 2 2013-09-04 12:00:00 13.1
1 3 2013-09-04 12:00:00 13.2
1 1 2013-09-04 12:05:00 12.1
1 2 2013-09-04 12:05:00 14.1
1 3 2013-09-04 12:05:00 13.2
1 1 2013-09-04 12:10:00 12.5
1 2 2013-09-04 12:10:00 13.3
1 3 2013-09-04 12:10:00 14.1
我需要一个MySQL查询,该查询使用station_id 1获取station的所有三个传感器的所有最新值。我想知道是否可以使用一个MySQL语句来实现。
我设法将数据从表中取出,但是效率不高。现在,我首先为站点1选择所有不同的传感器,然后为每个传感器调用另一个MySQL SELECT语句。一些站点有10个以上的传感器,因此使用这种方法,我至少需要11条MySQL语句才能从数据库中获取数据。
我想将此包含在一个MySQL语句中。那可能吗?如何?
检索所有工作站上所有传感器的最新读数。
SELECT s.*
FROM (SELECT station_id, sensor_id, MAX(Timestamp) as max_timestamp
FROM sensorvalue
GROUP BY station_id, sensor_id
) m
JOIN sensorvalue s
ON s.station_id = m.station_id
AND s.sensor_id = m.sensor_id
AND s.Timestamp = m.max_timestamp
将其限制为特定的电台。
SELECT s.*
FROM (SELECT station_id, sensor_id, MAX(Timestamp) as max_timestamp
FROM sensorvalue
WHERE station_id = 1
GROUP BY station_id, sensor_id
) m
JOIN sensorvalue s
ON s.station_id = m.station_id
AND s.sensor_id = m.sensor_id
AND s.Timestamp = m.max_timestamp
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句