![](/img/trans.png)
[英]MySQL Error 1064 when using CASE trying to update a field in between two tables
[英]MySQL Error 1064 when trying to update with CASE
我希望每天更新我的表格并将训练天数减少 1。 如果递减后为0,则应将其设置为NULL。 如果是这样,塞尔。 训练也必须设置为 NULL。 我想出了以下声明:
UPDATE charakter
SET `Days Training` = CASE WHEN `Days Training` is > 0
THEN CASE WHEN `Days Training`-1 > 0 THEN `Days Training`-1 END,
ELSE null
END,
`Sel. Training` = CASE WHEN `Days Training` IS null THEN null END
但是它返回#1064,这意味着语法中有错误。 我找不到它,我做错了什么?
编辑:我发现了我的错误,我必须包含一个 WHERE 语句。 我的最终和工作声明如下。
UPDATE charakter
SET `Days Training` =
CASE
WHEN `Days Training`-1 = '0' then null
ELSE `Days Training`-1
END,
`Sel. Training` =
CASE
WHEN `Days Training` = '0' then null
ELSE `Sel. Training`
END
WHERE 1
我认为你在这里想要的逻辑很简单:
UPDATE charackter
SET `Days Training` = CASE WHEN `Days Training` > 1 THEN `Days Training` - 1 END;
通过不提供明确的ELSE
条件,当训练天数为零或更少时,MySQL 只会为任何情况分配NULL
。 在这种情况下,进行递减将导致负数,您已经声明要用NULL
替换它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.