SQL Update如果value = 1

时间:2014-09-30 17:45:52

标签: sql sql-update

我有一个SQL“ON DUPLICATE KEY UPDATE”。在更新的该部分中,我有多个字段。其中一个字段是活动的。我想要做的只是在当前值为1时更新活动字段。如果ISNULL:active = ISNULL(@active, active),我知道如何更新。如果值为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 个答案:

答案 0 :(得分:2)

  

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

     

如果值为1,有没有办法做同样的事情?

是的,您可以使用CASE表达式执行此操作:

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

对于一般情况(例如,如果您希望仅在其当前值小于123时更新active),您可以使用以下语法:

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

答案 1 :(得分:0)

或者你可以试试这个:

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

因此,当@active = 1时,它首先使其为null,然后检查是否为空。