2014-03-07 84 views
0

我想寫一個將更新product_quantity的sql語句,當且僅當當前值小於要更新的​​值...您是否會舉例說明如何向語句添加條件。有沒有辦法給sql語句分配條件?

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

回答

1

只需將它添加到那裏的條件。在這兩種情況下,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' 

但我認爲第一個選項是更好的選擇:

  • 的更新是有條件的,意思是:條件不匹配:沒有更新。
  • 即使值相等,第二版本也會始終更新該行。

這可能會有影響,如果你正在跟蹤最新的變化時間或某事。像那樣。

+1

你不能像這樣使用MAX。您需要使用'GREATEST()'來代替。 – invisal

+0

@invisal你是對的 - 只是發揮出來:) – dognose

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 
相關問題