我有一个MySQL表,存储时间序列数据 - 基本上是来自多个传感器的温度和湿度样本,在(相对)固定的时间间隔内进行采集。
每个传感器的值都会定期存储到表中(以及传感器的ID),无论记录的温度和湿度是否发生变化。由此创建了一个相对较大的表,因此我已将应用程序更新为仅在记录值更改时才为传感器存储一个值 - 当值更改时,它现在将存储两行之前和之后的传感器值(这使图表代码保持不变)。
现在,我想整理旧数据,以删除特定传感器的任何连续重复读数,仅保留表示第一次记录新传感器值或最后一次记录传感器值的行。实际上,这只是删除冗余数据。
我尝试构建此查询,但由于特定单个传感器的主键不是连续的,我很难确定可以删除的重复行。
这更好地说明了数据摘录 - 我已将我要保留的行用粗体标记,并添加了一条说明为什么要保留该特定行。
每个传感器的值都会定期存储到表中(以及传感器的ID),无论记录的温度和湿度是否发生变化。由此创建了一个相对较大的表,因此我已将应用程序更新为仅在记录值更改时才为传感器存储一个值 - 当值更改时,它现在将存储两行之前和之后的传感器值(这使图表代码保持不变)。
现在,我想整理旧数据,以删除特定传感器的任何连续重复读数,仅保留表示第一次记录新传感器值或最后一次记录传感器值的行。实际上,这只是删除冗余数据。
我尝试构建此查询,但由于特定单个传感器的主键不是连续的,我很难确定可以删除的重复行。
这更好地说明了数据摘录 - 我已将我要保留的行用粗体标记,并添加了一条说明为什么要保留该特定行。
+-----+----------+---------------------+-------------+----------+ | id | sensorid | datetime | temperature | humidity | +-----+----------+---------------------+-------------+----------+ | 818 | E9 | 2012-10-23 20:59:03 | 20.00 | 72 | E9的第一个温度值 | 819 | C3 | 2012-10-23 20:59:19 | 19.50 | 69 | C3的第一个温度值 | 820 | E9 | 2012-10-23 20:59:47 | 20.00 | 72 | | 821 | C3 | 2012-10-23 21:00:00 | 19.50 | 69 | | 822 | E9 | 2012-10-23 21:00:29 | 20.00 | 72 | | 823 | C3 | 2012-10-23 21:00:41 | 19.50 | 69 | | 824 | E9 | 2012-10-23 21:01:12 | 20.00 | 72 | | 825 | C3 | 2012-10-23 21:01:22 | 19.50 | 69 | | 826 | E9 | 2012-10-23 21:01:55 | 20.00 | 72 | | 827 | C3 | 2012-10-23 21:02:03 | 19.50 | 69 | | 828 | E9 | 2012-10-23 21:02:38 | 20.00 | 72 | | 829 | C3 | 2012-10-23 21:02:44 | 19.50 | 69 | | 830 | E9 | 2012-10-23 21:03:21 | 20.00 | 72 | | 831 | C3 | 2012-10-23 21:03:25 | 19.50 | 69 | | 832 | E9 | 2012-10-23 21:04:04 | 20.00 | 72 | | 833 | C3 | 2012-10-23 21:04:06 | 19.50 | 69 | | 834 | EC | 2012-10-23 21:04:32 | 13.90 | 91 | EC的第一个温度值 | 835 | EC | 2012-10-23 21:04:32 | 13.90 | 91 | | 836 | C3 | 2012-10-23 21:04:47 | 19.50 | 69 | | 837 | E9 | 2012-10-23 21:04:47 | 20.00 | 72 | | 838 | EC | 2012-10-23 21:05:11 | 13.90 | 91 | | 839 | C3 | 2012-10-23 21:05:28 | 19.50 | 69 | | 840 | E9 | 2012-10-23 21:05:31 | 20.00 | 72 | | 841 | EC | 2012-10-23 21:05:50 | 13.90 | 91 | | 842 | C3 | 2012-10-23 21:06:09 | 19.50 | 69 | | 843 | E9 | 2012-10-23 21:06:13 | 20.00 | 72 | E9的最后一个温度值为20 | 844 | EC | 2012-10-23 21:06:29 | 13.90 | 91 | | 845 | C3 | 2012-10-23 21:06:50 | 19.50 | 69 | | 846 | E9 | 2012-10-