我试图使用Postgres更新多行查询。这就是我要做的:如果sku
是0001
,那么我要将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
)
运行查询前
<表类>sku field_1 tbody><<tr>0001 dummy_1 0002 dummy_2 0003 dummy_3 0004 dummy_4 0005 dummy_5 0006 dummy_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');