有没有办法为sql语句分配条件?

时间:2014-03-07 01:52:04

标签: mysql sql if-statement conditional-statements

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

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

2 个答案:

答案 0 :(得分:1)

嗯,你可以这样做:

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

答案 1 :(得分:1)

只需将其添加到where条件即可。在{c}的两种情况下,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' 

但我认为FIRST选项是更好的选择:

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

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