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

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

例如:

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

我怎样才能做到这一点?

4

3 回答 3

4

像这样的东西:

UPDATE base_resources
    SET value = least(value + ?, 1500)
    WHERE resource_id = ?
    AND base_id = ?
于 2013-07-23T20:46:03.577 回答
0

也许case语法?

UPDATE base_resources
    SET value = case 
                  when value + ? > X then X
                  else  value + ?
                end 
    WHERE resource_id = ?
    AND base_id = ?
于 2013-07-23T20:45:45.567 回答
0

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

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

我并不是说前面的任何一个答案都是错误的,但我不知道你的情况是否有意义。我希望限制value它不超过 1500,并根据仓库的库存和商店的容量来计算要发送的物品数量。

于 2013-07-23T20:56:58.883 回答