MySQL使用Select更新查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL使用Select更新查询相关的知识,希望对你有一定的参考价值。
有人可以解释如何编写更新查询以更新表“abcd”中的列“newBalance”与以下查询中的余额的O / P?
我想使用以下查询更新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
任何帮助都非常感谢。
答案
你可以使用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不保证表达式的评估顺序。
但是,这不是你提出的问题。如果您希望修复查询,请询问包含样本数据和所需结果的新问题。
以上是关于MySQL使用Select更新查询的主要内容,如果未能解决你的问题,请参考以下文章
mysql update select 从查询结果中更新数据