我正在尝试使用以下代码更新表:
"UPDATE balance_down SET earned_back=earned_back + charge_amount, charge_amount='0'
基本上我试图获取charge_amount的值,将其添加到赚回来,并将charge_amount设置为零。我怎么能做到这一点?
答案 0 :(得分:3)
单表UPDATE分配通常从左到右进行评估。 这就是您的查询按预期工作的原因。 但是如果你替换操作数,你会得到错误的结果:
SET charge_amount='0', earned_back=earned_back + charge_amount
因此它按指定的顺序(从左到右)进行评估。
无论如何,您总是可以将查询拆分为两个独立的查询(设置为earn_back = earn_back + charge_amount,然后设置charge_amount ='0'),以便不依赖于评估顺序。
答案 1 :(得分:1)
我认为有两个查询更清楚。
UPDATE balance_down SET earned_back=earned_back + charge_amount;
UPDATE balance_down SET charge_amount='0';
这表明您正在按收费金额增加earn_back。然后充电量变为零。很明显,charge_amount的数量正在全部适用。