更新后的值必须保持在两个值之间

时间:2017-05-25 13:26:26

标签: mysql sql mysqli

我的游戏中有一个变量,它会增加积分,有时会减少积分 在我的数据库中,我有一个分数表,但分数的值必须始终在0到20之间。
因此,如果我的分数目前为2且变量$ value为-3,我可以避免这样做。

UPDATE  table
SET     field = GREATEST(0, field + $value)
WHERE   id = $id

有没有办法使价值不低于0且不高于20?

2 个答案:

答案 0 :(得分:1)

您可以使用案例表达。

UPDATE  [table]
SET [field] = CASE
                  WHEN [field] + @value > 20
                       THEN 20
                  WHEN [field] + @value < 0
                       THEN 0
                  ELSE [field] + @value
              END
WHERE   [id] = @ID;

答案 1 :(得分:1)

你可以像这样嵌套GREATEST和LEAST,以达到你想要的效果。

UPDATE  table
SET     field = GREATEST(0, LEAST(20, field + $value))
WHERE   id = $id