SQL更新添加到具有最小值/最大值的字段

SQL更新添加到具有最小值/最大值的字段,sql,max,Sql,Max,我有这个声明 UPDATE table SET health = health + 1 WHERE name='Tom' 如何在语句中根据设置数字字段的最大值?伪代码: UPDATE table set health = min(health+1, max_health) WHERE name='Tom' 最简单的方法是修改,其中: 您也可以使用CASE来执行此操作 然而,我认为第一种方法是最简单的。我们也可以使用CASE 谢谢,我用的代码最少。当我有能力时,将选择作为正确答案请注意,如果某

我有这个声明

UPDATE table SET health = health + 1 WHERE name='Tom'
如何在语句中根据设置数字字段的最大值?伪代码:

UPDATE table set health = min(health+1, max_health) WHERE name='Tom'

最简单的方法是修改,其中:

您也可以使用CASE来执行此操作

然而,我认为第一种方法是最简单的。

我们也可以使用CASE


谢谢,我用的代码最少。当我有能力时,将选择作为正确答案请注意,如果某些记录可能具有health>max_health,则第一个语句将不会等效于问题中的伪代码。我想这是很明显的,但我认为应该说明这个假设。那么当健康+1=最大健康时呢?那么其他条件是最大健康在这种情况下,健康+1和最大健康都是相等的,所以它不会产生影响。我们试一下健康为5,最大健康为6。对不起,先生,如果我不能使你康复,但这是事实,但我仍然努力遵守你的诺言。在这种情况下,它转到ELSE条件。您可以通过在“其他部分”中保留6+1或7代替“最大健康”进行检查,它将返回7。
UPDATE table
    SET health = health + 1
    WHERE name = 'Tom' AND health < max_health;
UPDATE table
    SET health = LEAST(health + 1, max_health)
    WHERE name = 'Tom' ;
UPDATE table 
SET health = (CASE WHEN health+1 < max_health THEN 
                  health+1 
              ELSE 
                  max_health 
              END) WHERE name='Tom'
UPDATE table SET health = IIF (health+1 < max_health, health+1, max_health) WHERE name='Tom'