我将一些模拟寄存器(0和1)中的值存储到数据库中,我想做以下事情:
我在数据库中有下表用于存储传感器值:
ID | TIMESTAMP | ALIAS | STATUS
1 | 2012-09-12 12:31:01 | AR1 | 0
2 | 2012-09-12 12:31:02 | AR1 | 0
3 | 2012-09-12 12:31:03 | AR1 | 0
4 | 2012-09-12 12:31:04 | AR1 | 0
5 | 2012-09-12 12:31:05 | AR1 | 0
6 | 2012-09-12 12:31:06 | AR1 | 0
7 | 2012-09-12 12:31:07 | AR1 | 1
8 | 2012-09-12 12:31:08 | AR1 | 1
9 | 2012-09-12 12:31:09 | AR1 | 1
10 | 2012-09-12 12:31:10 | AR1 | 0
11 | 2012-09-12 12:31:11 | AR1 | 0
12 | 2012-09-12 12:31:12 | AR1 | 0
13 | 2012-09-12 12:31:13 | AR1 | 0
14 | 2012-09-12 12:31:14 | AR1 | 0
15 | 2012-09-12 12:31:15 | AR1 | 1
16 | 2012-09-12 12:31:16 | AR1 | 0
17 | 2012-09-12 12:31:17 | AR1 | 0
18 | 2012-09-12 12:31:01 | AR1 | 0
...
使用 SQL 查询,我希望能够在寄存器更改状态时返回,以便在不使用不必要点的情况下创建图表。请记住,该表包含 100 万个或更多值,通过这样做,我将减少返回数据的大小,并且图表会更快。
我不确定 MySQL 是否提供了所描述的功能,但起初我认为这GROUP BY
可能是一个很好的解决方案,但不幸的是它不是。
有什么建议么?
期望的输出:
ID | TIMESTAMP | ALIAS | STATUS
1 | 2012-09-12 12:31:01 | AR1 | 0
6 | 2012-09-12 12:31:06 | AR1 | 0
7 | 2012-09-12 12:31:07 | AR1 | 1
9 | 2012-09-12 12:31:09 | AR1 | 1
10 | 2012-09-12 12:31:10 | AR1 | 0
14 | 2012-09-12 12:31:14 | AR1 | 0
15 | 2012-09-12 12:31:15 | AR1 | 1
16 | 2012-09-12 12:31:16 | AR1 | 0
...
您可以观察到我正在删除连续值之间的中间线,因为我只需要第一次和最后一次出现的值以及新值。
有什么建议么?