我的表格如下:
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
答案 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