2014-09-30 54 views
2

我有一個SQL「ON DUPLICATE KEY UPDATE」。在更新的那一部分中,我有多個字段。其中一個領域是積極的。我想要做的只是更新活動字段,如果當前值是1.我知道如何更新如果ISNULL:active = ISNULL(@active, active)。如果值爲1,是否有辦法做同樣的事情?SQL更新如果值= 1

ON DUPLICATE KEY UPDATE 
          display_name=VALUES(display_name), 
          wholesale=VALUES(wholesale), 
          saleWS=VALUES(saleWS), 
          taxable=VALUES(taxable), 
          sku=VALUES(sku), 
          code=VALUES(code), 
          onSale=VALUES(onSale), 
          description=VALUES(description), 
          link=VALUES(link), 
          image=VALUES(image), 
          display_page=VALUES(display_page), 
          attachment=VALUES(attachment), 
          applyCoupon=VALUES(applyCoupon) 

回答

2

我知道如何更新,如果ISNULLactive = ISNULL(@active, active)

如果值爲1,是否有辦法做同樣的事情?

是的,你可以做到這一點使用CASE表達:

active = CASE active WHEN 1 THEN @active ELSE active END 

對於一般的情況下(比如,如果你想更新active只有當其電流值小於123),你可以使用這句法:

active = CASE WHEN active < 123 THEN @active ELSE active END 
0

或者你可以試試這個:

ISNULL(NULLIF(@active,1),active) 

因此,當@active = 1時,它首先使其爲空,然後檢查爲空。