你可以用
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不保证表达式的求值顺序。
不过,这不是你问的问题。如果要修复查询,请使用示例数据和所需结果提出新问题。