【问题标题】:Is there a way to assign conditions to sql statement?有没有办法为sql语句分配条件?
【发布时间】:2014-04-10 00:00:56
【问题描述】:

我正在尝试编写一个将更新product_quantity 的sql 语句,当且仅当当前值小于要更新的​​值时...您能否举例说明如何向语句添加条件。

 UPDATE Product
 SET product_quantity='5'
 WHERE id='2'

【问题讨论】:

    标签: mysql sql if-statement conditional-statements


    【解决方案1】:

    只需将其添加到 where 条件即可。 5 在这两种情况下都应替换为您的动态值。

    UPDATE Product
    SET product_quantity='5'
    WHERE id='2' AND product_quantity < 5
    

    你也可以使用

    UPDATE Product
    SET product_quantity= GREATEST('5', product_quantity)
    WHERE id='2' 
    

    但我认为第一个选项是更好的选择:

    • 更新是有条件的,意思是:条件不匹配:无更新。
    • 第二个版本将始终更新行,即使值相等。

    如果您正在跟踪最新的更改时间或某事,这可能会产生影响。像这样。

    【讨论】:

    • 你不能像这样使用MAX。您需要改用GREATEST()
    【解决方案2】:

    好吧,你可以这样做:

    UPDATE Product
    SET product_quantity = 5
    WHERE id = 2 AND product_quantity < 5
    

    或者像@dognose所说的,你可以使用GREATEST()函数。

    UPDATE Product
    SET product_quantity = GREATEST(5, product_quantity)
    WHERE id = 2
    

    或者你可以使用这样的简单条件

    UPDATE Product
    SET product_quantity = (
         CASE WHEN product_quantity < 5 THEN 5 
         ELSE product_quantity END
    )
    WHERE id = 2
    

    【讨论】:

      猜你喜欢
      • 2014-10-02
      • 2020-07-31
      • 2012-01-22
      • 1970-01-01
      • 2012-03-23
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多