单个UPDATE查询在多个条件SQL上修改多个列

时间:2013-11-02 07:45:40

标签: sql-server-2008

我有一个包含三列IDKEYVALUE的SQL表 现在我想根据与该行关联的KEY列更新此表的特定行。

我尝试按照UPDATE查询来更新单个更新查询中的多行。

UPDATE TABLE_NAME
SET VALUE=(CASE WHEN [KEY]='KEY1' THEN 'VALUE 1 MODIFIED'
                WHEN [KEY]='KEY3' THEN 'VALUE 3 MODIFIED'
          END)

但此查询使用NULL值更新了不匹配的行,如下图

所示

enter image description here

是他们编写单个UPDATE查询以根据不同条件修改不同列的任何其他方法吗?

1 个答案:

答案 0 :(得分:1)

UPDATE TABLE_NAME
SET VALUE=(CASE WHEN [KEY]='KEY1' THEN 'VALUE 1 MODIFIED'
                WHEN [KEY]='KEY3' THEN 'VALUE 3 MODIFIED'
            ELSE ''
          END)

这会将不匹配的行设置为空字符串'',但您可以根据需要设置默认值。但是,如果你希望该列保留其值,那么你就可以这样。

UPDATE TABLE_NAME
SET VALUE=(CASE WHEN [KEY]='KEY1' THEN 'VALUE 1 MODIFIED'
                WHEN [KEY]='KEY3' THEN 'VALUE 3 MODIFIED'
            ELSE VALUE
          END)