gpt4 book ai didi

mysql - 高级 MySQL 查询,获取具有相同 id 和不同 subid 的最新记录范围

转载 作者:行者123 更新时间:2023-11-29 08:23:31 26 4
gpt4 key购买 nike

我有一个名为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 的所有三个传感器的所有最新值。我想知道这是否可以通过一个 MySQL 语句实现。

我已经设法从表中获取数据,但效率不高。现在,我首先选择站 1 的所有不同传感器,然后为每个传感器调用另一个 MySQL SELECT 语句。有些站有超过 10 个传感器,因此使用这种方法我至少需要 11 个 MySQL 语句才能从数据库中获取数据。

我想将其包含在一个 MySQL 语句中。那可能吗?又如何?

最佳答案

有多种写法。以下可能是最简单的代码,使用 substring_index()/group_concat() 技巧:

select sensor_id, max(TimeStamp),
substring_index(group_concat(Value) order by TimeStamp desc), ',', 1) as LastValue
from sensorvalue sv
where station_id = 1
group by sensor_id;

编辑:

所有时间戳值看起来都是相同的。如果这是真的,您还可以这样做:

select sv.*
from sensorvalue sv
where station_id = 1 and
timestamp = (select max(timestamp) from sensorvalue where station_id = 1);

关于mysql - 高级 MySQL 查询,获取具有相同 id 和不同 subid 的最新记录范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18617779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com