如果付款大于剩余余额,则将余额更新为0

时间:2017-11-16 10:27:15

标签: php sql

使用此查询我可以轻松地将付款扣除到剩余余额

假设我的rem_balance是3000而且我的付款是5000,所以基本上改变是2000。

UPDATE tbl_users SET rem_balance = (rem_balance - '5000') WHERE user_id = '2017001002'

但是因为我使用这个查询所发生的事情是rem_balance更新到-2000我想要实现的是,如果支付是> rem_balance,则rem_balance变为0并且它将分开更改。

1 个答案:

答案 0 :(得分:2)

这样的事情应该有效

UPDATE tbl_users 
SET rem_balance = (CASE WHEN rem_balance < 5000 THEN 0 ELSE rem_balance - 5000 END)
WHERE user_id = '2017001002'

请注意您在SQL中使用隐式转换('5000'而不是5000)。这是一个坏习惯,在某些情况下它可能会损害您的查询的性能。例如,如果tbl_users.user_id也是整数,则更新将无法使用索引搜索具有特定user_id的行,并且它将执行非常慢的顺序扫描。