我有一个包含三列ID
,KEY
和VALUE
的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
值更新了不匹配的行,如下图
是他们编写单个UPDATE
查询以根据不同条件修改不同列的任何其他方法吗?
答案 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)