2014-09-30 53 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时,它首先使其为空,然后检查为空。