Devo aggiornare molte colonne in molte righe in PostgreSQL 9.1. Attualmente sto facendo con molti diversi UPDATE
query, ognuno che funziona su una riga diversa (in base alla chiave primaria):Aggiornamento di più righe con chiave primaria diversa in una query in 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;
devo fare parecchie migliaia di queste query.
C'è qualche cosa che posso "aggiornamento di massa" un sacco di righe in una query a PostgreSQL? Se si utilizza INSERT
, è possibile inserire più righe contemporaneamente: (INSERT INTO mytable (column_a, column_b) VALUES ((12, 6), (1, 45));
), Esiste qualcosa del genere per UPDATE
?
Qualcosa di simile:
UPDATE mytable SET (id, column_a, column_b) FROM VALUES ((1, 12, 6), (2, 1, 45), (3, 56, 3), …)
??
I punti importanti è che ogni 'VALUE' aggiornerà solo una riga (basato sul WHERE id =
). Ogni riga avrà lo stesso numero fisso di colonne che è necessario aggiornare, ma ogni riga avrà valori diversi per ogni colonna, quindi UPDATE mytable SET column_a = 12, column_b = 6 WHERE id IN (1, 2, 3);
non funzionerà.
Questo approccio ha funzionato benissimo per me !! Grazie!! Funziona anche con l'unione su più chiavi/colonne. Cioè, "dove c.id = m.id AND c.column_a = m.column_a"; –