Вы можете использовать update
с join
:
update abcd join
(select id, inAmt, outAmt,
@prev := if(id = 1, @prev := @curBalance , @prev + (@prevOut-@prevIn)) as balance,
@prevIn := inAmt,
@prevOut := outAmt
from (select @prev := 0) as i cross join
abcd
order by id
) x
on abcd.id = x.id
set abcd.newbalance = x.balance;
С учетом всего этого ваш запрос точно не будет работать и в любой момент может потерпеть неудачу. Вы используете переменные в одном выражении и назначаете их в другом. MySQL не гарантирует порядок вычисления выражений.
Однако это был не тот вопрос, который вы задали. Если вы хотите, чтобы запрос был исправлен, задайте новый вопрос с примерами данных и желаемыми результатами.