首页 > 解决方案 > 用两个条件更新一列

问题描述

我想做以下事情:

UPDATE table1 t1
SET column1 = 10 * t2.column1
FROM table2 t2
WHERE t1.column2 = 'yyy'

UPDATE table1 t1
SET column1 = 10 * t2.column2
FROM table2 t2
WHERE t1.column2 = 'zzz'

是否可以将其保存在一个语义块中?

标签: postgresql

解决方案


CASE WHEN ..只能在具有有效条件('yyy' OR 'zzz')的行上使用和应用更新

    UPDATE table1 t1 
    SET    column1 = CASE 
            WHEN t1.column2 = 'yyy' THEN column1 = 10 * t2.column1 
            WHEN t1.column2 = 'zzz' THEN column1 = 10 * t2.column2 
    end
    FROM   table2 t2
    WHERE t1.column2  IN ( 'yyy','zzz')

推荐阅读