首页 > 解决方案 > 是否有更好的方法来更新 sql 中表的多个列

问题描述

有一个更好的方法吗?

我必须update multiple columns如下表:

UPDATE tableA
       SET column1= '1234' WHERE column1 is NOT NULL;
UPDATE tableA
       SET column2= '1234' WHERE column2 is NOT NULL;
UPDATE tableA
        SET column3= '1234' WHERE column3 IS NOT NULL OR column3<>'0000';

标签: sqlsql-update

解决方案


我认为您的最后一个条件应该是column3 IS NOT NULL AND column3 <> '0000'. OR不包括第二个条件。

所以我想你想要:

UPDATE tableA
    SET column1 = (CASE WHEN column1 IS NOT NULL THEN '1234' END),
        column2 = (CASE WHEN column2 IS NOT NULL THEN '1234' END),
        column3 = (CASE WHEN column3 IS NOT NULL AND column3 <> '0000' THEN '1234' END)

    WHERE (column1 IS NOT NULL) OR
          (column2 IS NOT NULL) OR
          (column3 IS NOT NULL AND column3 <> '0000');

WHERE子句不影响结果集。它只是为了限制正在更新的行数。


推荐阅读