在PostgresSQL中使用单个查询更新多行



我试图使用Postgres更新多行查询。这就是我要做的:如果sku0001,那么我要将field_1更新为foo。与所有其他skus重复。

当我运行这段代码时,这段代码正确地更新了正确的行和字段。但是它把所有其他记录的field_1变成了null。应该在这里添加什么代码来防止这种情况?

UPDATE table
SET field_1 = ( case WHEN sku = '0001' then 'foo'
WHEN sku = '0002' then 'bar'
WHEN sku = '0003' then 'baz'
END
)

运行查询前

<表类>skufield_1tbody><<tr>0001dummy_10002dummy_20003dummy_30004dummy_40005dummy_50006dummy_6

添加WHERE子句,限制要更新的sku:

UPDATE table
SET field_1 = CASE sku WHEN '0001' THEN 'foo'
WHEN '0002' THEN 'bar'
WHEN '0003' THEN 'baz' END
WHERE sku IN ('0001', '0002', '0003');