Php 如果付款大于剩余余额,则将剩余余额更新为0
使用此查询,我可以轻松地将付款扣除到剩余余额中 假设我的rem_余额是3000,我的付款是5000,所以基本上变化是2000Php 如果付款大于剩余余额,则将剩余余额更新为0,php,sql,Php,Sql,使用此查询,我可以轻松地将付款扣除到剩余余额中 假设我的rem_余额是3000,我的付款是5000,所以基本上变化是2000 UPDATE tbl_users SET rem_balance = (rem_balance - '5000') WHERE user_id = '2017001002' 但是,由于我使用了这个查询,rem\u余额会更新到-2000,我想要实现的是,如果付款是rem\u余额,rem\u余额将变为0,它将分离更改。类似的方法应该可以工作 UPDATE tbl_users
UPDATE tbl_users SET rem_balance = (rem_balance - '5000') WHERE user_id = '2017001002'
但是,由于我使用了这个查询,rem\u余额会更新到-2000,我想要实现的是,如果付款是
rem\u余额,rem\u余额将变为0,它将分离更改。类似的方法应该可以工作
UPDATE tbl_users
SET rem_balance = (CASE WHEN rem_balance < 5000 THEN 0 ELSE rem_balance - 5000 END)
WHERE user_id = '2017001002'
更新tbl\u用户
设置rem_balance=(rem_balance<5000时为0,否则rem_balance-5000结束)
其中用户_id='2017001002'
请注意,您在SQL中使用隐式转换(“5000”而不是5000)。这是一个坏习惯,在某些情况下会损害查询的性能。例如,如果
tbl\u users.user\u id
也是整数,那么更新将无法使用索引来搜索具有特定user\u id
的行,并且它将执行非常缓慢的顺序扫描。添加您正在使用的DBMS标记我使用mysql作为我的数据库。和php作为我的语言,如果条件允许,您可以使用。like:SET rem_balance=IF(),使用一个case
表达式。referee链接在这个查询中是否有可能获得rem_balance<5000的更改,like返回剩余值?@LionSmith我不确定你在问什么。你想还剩下的余额吗?不。。这正是我要问的。。我的评论只是一个基于你答案的问题。@LionSmith我认为这不可能在一个查询中实现。您需要在更新后运行选择
,以检索新的rem_余额
值。