Tôi phải cập nhật nhiều cột trong nhiều hàng trong PostgreSQL 9.1. Tôi hiện đang làm việc đó với nhiều UPDATE
truy vấn khác nhau, mỗi người làm việc trên một hàng khác nhau (dựa trên khóa chính):Cập nhật nhiều hàng với khóa chính khác nhau trong một truy vấn trong 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;
tôi phải làm vài nghìn những câu truy vấn.
Có cách nào tôi có thể "cập nhật hàng loạt" nhiều hàng trong một truy vấn trong PostgreSQL không? Nếu bạn đang sử dụng INSERT
, bạn có thể chèn nhiều hàng cùng lúc: (INSERT INTO mytable (column_a, column_b) VALUES ((12, 6), (1, 45));
), Có điều gì đó tương tự cho UPDATE
không?
Cái gì như:
UPDATE mytable SET (id, column_a, column_b) FROM VALUES ((1, 12, 6), (2, 1, 45), (3, 56, 3), …)
??
Điểm quan trọng là mỗi 'VALUE' sẽ chỉ cập nhật một hàng (dựa trên WHERE id =
). Mỗi hàng sẽ có cùng số cột cố định cần cập nhật, nhưng mỗi hàng sẽ có các giá trị khác nhau cho mỗi cột, vì vậy UPDATE mytable SET column_a = 12, column_b = 6 WHERE id IN (1, 2, 3);
sẽ không hoạt động.
Cách tiếp cận này hiệu quả với tôi !! Cảm ơn!! Cũng làm việc với việc tham gia vào nhiều khóa/cột. Đó là, "trong đó c.id = m.id AND c.column_a = m.column_a"; –