使用基于日期的先前记录更新列

时间:2014-03-22 23:47:18

标签: mysql

我的表格如下:

id_sensor | date_in | value | cons

我有一个(几乎)工作的查询:

UPDATE ow_data D,ow_data X 
SET D.cons = X.value 
WHERE D.id_sensor=14 AND X.id_sensor=D.id_sensor AND X.date_in>D.date_in

这样可以使缺点从下一条记录中获得,因为记录按升序 date_in - 顺序进行。

但我想要的是用上一个记录的值更新缺点

但是,如果我改为X.date_in < D.date_in,缺点总是会收到第一个记录中的值,显然因为它首先出现在 X

我在X上尝试过ORDER BY但似乎不允许这样做。


更新

原来我自己解决了这个问题:

UPDATE ow_data D
LEFT JOIN (SELECT * FROM ow_data
WHERE id_sensor=14 GROUP BY date_in ORDER BY date_in DESC) X    
ON D.date_in > X.date_in 
SET D.cons = X.value WHERE D.id_sensor=14

2 个答案:

答案 0 :(得分:0)

这是在黑暗中拍摄的,因为我从未遇到过必须这样做的情况,但你能这样做吗?

UPDATE ow_data D 
SET D.cons = (select X.value from ow_data X where X.date_in < D.date_in and X.id_sensor = 14 order by X.date_in desc limit 1) 
WHERE D.id_sensor=14;

我的示例删除了您的X.id_sensor = D.id_sensor条件,因为如果ID已知,您也可以检查一下。

答案 1 :(得分:0)

原来我自己解决了这个问题:

npm i jquery tether bootstrap --save-dev