我必須更新PostgreSQL 9.1中很多行的許多列。我目前正在做許多不同UPDATE
查詢,每一個在不同的行工作(基於主鍵):在PostgreSQL的一個查詢中用不同的主鍵更新多行?
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);
將不起作用。
這種方法對我來說非常好!謝謝!!也適用於連接多個鍵/列。即,「where c.id = m.id AND c.column_a = m.column_a」; –