有人可以解释如何编写更新查询,以在以下查询中用余额的O / P更新表“ abcd”中的“ newBalance”列吗?
我想使用以下查询为newBalance列更新每行的余额。
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
, abcd
order
by id
我们非常感谢您的帮助。
答案 0 :(得分:0)
您可以将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不保证表达式的求值顺序。
但是,这不是您提出的问题。如果您要固定查询,请提出一个新问题,其中包含示例数据和所需结果。