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 の 1 つのクエリで大量の行を「一括更新」できる方法はありますか? を使用している場合は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' が 1 つの行のみを更新することです (に基づいてWHERE id =
)。各行には、更新が必要な同じ固定数の列がありますが、各行には列ごとに異なる値があるため、機能しUPDATE mytable SET column_a = 12, column_b = 6 WHERE id IN (1, 2, 3);
ません。