我的数据库是在mysql中 .
我想要实现一些事情 . 我有两个时间序列数据 . 一个记录间隔15分钟,另一个记录值发生变化时记录 . 我想加入这两个表 .
所需的表将是3列,{time_stamp,table1.value,table2.value}和与table1相同的行数
1)table1.value只保留它的值 .
2)table2.value列在table1的time_stamp之前15分钟内具有表2中的最后一个值
3)如果table2.value为null,则保留最后的已知值
我试图离开加入两个表并尝试做"group by" time_stamp并试图从"group by"获得最新条目但没有成功 . 我还尝试替换结果列中的空值
"using @n := COALESCE(table2.value,@n)" . 我认为它没有按顺序排列 . 我试图在查询结束时添加订单也没有成功..
这可能只在一个查询中实现吗?感谢任何帮助!
表格1
+---------------------------------------+
|time | value |
+---------------------------+-----------+
|'2014-09-15 06:15:02.1500' | 71 |
|'2014-09-15 06:30:02.1500' | 72 |
|'2014-09-15 06:45:02.1500' | 73 |
|'2014-09-15 07:00:02.1500' | 74 |
|'2014-09-15 07:15:02.1500' | 75 |
|'2014-09-15 07:30:02.1500' | 76 |
|'2014-09-15 07:45:02.1500' | 77 |
+---------------------------+-----------+
表2
+---------------------------------------+
|time | value |
+---------------------------+-----------+
|'2014-09-15 06:14:02.1500' | 30 |
|'2014-09-15 06:15:02.1500' | 55 |
|'2014-09-15 06:18:02.1500' | 60 |
|'2014-09-15 06:20:02.1500' | 62 |
|'2014-09-15 06:23:02.1500' | 35 |
|'2014-09-15 07:36:02.1500' | 45 |
|'2014-09-15 07:38:02.1500' | 36 |
|'2014-09-15 07:40:02.1500' | 87 |
+---------------------------+-----------+
result_table
+---------------------------------------+----------+
|time |table1.val |table2.val|
+---------------------------+-----------+----------+
|'2014-09-15 06:15:02.1500' | 71 |30 |
|'2014-09-15 06:30:02.1500' | 72 |35 |
|'2014-09-15 06:45:02.1500' | 73 |35 |
|'2014-09-15 07:00:02.1500' | 74 |35 |
|'2014-09-15 07:15:02.1500' | 75 |35 |
|'2014-09-15 07:30:02.1500' | 76 |35 |
|'2014-09-15 07:45:02.1500' | 77 |87 |
+---------------------------+-----------+----------+
1 回答
您可以在值列表中使用subselect: