使用IF / ELSE进行更新

时间:2014-08-01 12:34:32

标签: sql-server

我想实现以下目标:

UPDATE users 
    IF defaultView = @newDefault 
    THEN SET defaultView = NULL
    ELSE SET defaultView = @newDefault 
WHERE id = @userid

与您不同,SQL服务器无法理解我想要实现的目标。

那么,我将如何在一个SQL查询中执行此操作 - 语法正确?

3 个答案:

答案 0 :(得分:4)

UPDATE users 
defaultView  =
CASE 
    WHEN defaultView = @newDefault 
    THEN NULL 
    ELSE @newDefault  
END
WHERE id = @userid

答案 1 :(得分:2)

只需使用NULLIF

即可
UPDATE users 
SET defaultView = NULLIF(@newDefault , defaultView)
WHERE id = @userid

答案 2 :(得分:1)

您想使用案例陈述而不是IF ELSE

   UPDATE users
   set defaultview = 
           CASE
           WHEN defaultview = @newDefault
           THEN NULL
           ELSE @newDefault
           END
  WHERE id = @userid