我必须在PostgreSQL 9.1中更新许多行中的许多列。目前,我正在使用许多不同的UPDATE
查询来执行此操作,每个查询都作用于不同的行(基于主键):
UPDATE mytable SET column_a = 12, column_b = 6 WHERE id = 1;
UPDATE mytable SET column_a = 1, column_b = 45 WHERE id = 2;
UPDATE mytable SET column_a = 56, column_b = 3 WHERE id = 3;
我必须执行数千个这些查询。
在PostgreSQL中是否有一种方法可以使用一个查询“批量更新”大量行?如果您正在使用INSERT
,则可以一次性插入多行:(INSERT INTO mytable (column_a, column_b) VALUES ((12, 6), (1, 45));
),是否有类似UPDATE
的东西?
类似于:
UPDATE mytable SET (id, column_a, column_b) FROM VALUES ( (1, 12, 6), (2, 1, 45), (3, 56, 3), … )
重点是每个“VALUE”只会更新一行(基于 WHERE id =
)。 每行将具有相同的固定列数需要更新,但每行将具有每个列的不同值,因此UPDATE mytable SET column_a = 12, column_b = 6 WHERE id IN (1, 2, 3);
不起作用。