在MySQL update语句中使用CASE根据CASE条件更新不同的列
我试图根据某些条件更新数据库中的2列。我有在MySQL update语句中使用CASE根据CASE条件更新不同的列,mysql,Mysql,我试图根据某些条件更新数据库中的2列。我有bid\u limit列,当bid\u limit>0时,我需要将addon\u limit列更新为addon\u limit-1 我尝试了以下查询,但对我无效 update tbl_user set (case when (bid_limit>0) then (bid_limit=bid_limit-1) else (addon_limit=addon_limit-1) end) where id='157' 提前感谢您可以在列上使用CASE时
bid\u limit
列,当bid\u limit>0
时,我需要将addon\u limit
列更新为addon\u limit-1
我尝试了以下查询,但对我无效
update tbl_user set (case when (bid_limit>0) then (bid_limit=bid_limit-1) else (addon_limit=addon_limit-1) end) where id='157'
提前感谢您可以在列上使用CASE时使用以下更新语句:
UPDATE tbl_user
SET addon_limit = CASE WHEN bid_limit <= 0 THEN addon_limit - 1 ELSE addon_limit END,
bid_limit = CASE WHEN bid_limit > 0 THEN bid_limit - 1 ELSE bid_limit END
WHERE id = '157'
更新tbl\u用户
设置加载项限制=当投标限制为0时,则投标限制为-1,否则投标限制结束
其中id='157'
确保在出价限制之前设置附加限制
:
单个表UPDATE
分配通常从左到右进行评估。对于多个表更新,不能保证按任何特定顺序执行分配
如果将列设置为当前的值,MySQL会注意到这一点,并且不会对其进行更新。
来源:
案例
在这种情况下是错误的选择。因为它代表定义多个条件。当您只有一个条件时,您应该使用IF
。这样:
更新tbl\u用户
设置
附加限制=如果(投标限制>0,附加限制,附加限制-1),
投标限额=如果(投标限额>0,投标限额-1,投标限额)