私はPostgreSQL 9.1の多くの行の多くの列を更新する必要があります。私は現在、多くの異なるUPDATE
クエリ、(主キーに基づいて)別の行で動作一つ一つにそれをやっている:PostgreSQLの1つのクエリで異なる主キーを持つ複数の行を更新しますか?
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);
は機能しません。
このアプローチは私のために素晴らしい!ありがとう!!複数のキー/列の結合でも機能します。つまり、 "どこでc.id = m.idとc.column_a = m.column_a"; –