1

我有一个由三列组成的 sql 表,ID现在 我想根据与该行关联的列更新该表的特定行。KEYVALUEKEY

我尝试使用以下UPDATE查询在单个更新查询中更新多行。

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

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

在此处输入图像描述

他们是否有其他方法可以编写单个UPDATE查询来根据不同的条件修改不同的列?

4

1 回答 1

3
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)
于 2013-11-02T11:16:13.023 回答