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

标签 mysql sql

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

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

有没有办法让该值不会低于 0 且不会高于 20?

最佳答案

您可以使用 case 表达式。

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

关于mysql - 更新后的值必须保持在两个值之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44181789/

相关文章:

mysql - 如何将数据从oracle数据库迁移到mysql数据库?

mysql - 读取 .csv 文件并将值插入到 mulesoft 中的 MySQL 数据库中

mysql - 提高 MySQL 索引效率 - 多个索引中的列?

SQL Server 2008 R2 : Find rows where column2 value present in column1

sql - 仅显示 EF 在 SQL 事件探查器中进行的查询

java - Dao复杂逻辑sql

sql - 在 Redshift 中生成随机数后,如何防止在同一查询中更改其值?

java - 用java监控sql连接信息

php - Xcode 将带 url 的变量发送到 php 页面,为 select 语句检索 php 代码中的变量

mysql - 是什么导致了错误 "Column does not match the value count at row 1"?