更新double值但不高于x值?

时间:2013-07-23 20:43:53

标签: mysql sql

UPDATE base_resources
    SET value = value + ?
    WHERE resource_id = ?
    AND base_id = ?

我有这个查询。有可能以某种方式为该值添加最大值吗?即“值”的新值不能高于x,如果是,则将其设置为x。

例如:

如果输入的值是(1500)并且允许的最大值(我想在我的查询中添加的条件)是1000,则该值将为1000。

我该怎么做?

3 个答案:

答案 0 :(得分:4)

这样的事情:

UPDATE base_resources
    SET value = least(value + ?, 1500)
    WHERE resource_id = ?
    AND base_id = ?

答案 1 :(得分:0)

可能是case语法?

UPDATE base_resources
    SET value = case 
                  when value + ? > X then X
                  else  value + ?
                end 
    WHERE resource_id = ?
    AND base_id = ?

答案 2 :(得分:0)

这是否具有商业意义? value是商店中商品的供应吗?如果商店无法存储超过1500个项目,则将值限制为1500可能会导致资源丢失。想象一下仓库运送500件物品到商店。假设商店已经有1200件商品。从概念上讲,您有此交易:

  • 开始交易
    • 从仓库的库存中减去500。
    • 尝试将500添加到商店的库存中。
      • 仅添加300个。
    • 额外200件商品会怎样?他们会消失吗?
  • 结束交易。

我不是说早先的答案都是错的,但我不知道你的情况是否有意义。我宁愿在value上设置一个不超过1500的约束,并根据仓库的库存和商店的容量来计算要发送的商品数量。