我必须在 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);
不起作用。