PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

GROUP BY nella clausola UPDATE FROM

L'istruzione UPDATE non supporta GROUP BY, vedere la documentazione. Se stai cercando di aggiornare t1 con la riga corrispondente da t2, vorresti usare la clausola WHERE qualcosa del genere:

UPDATE table t1 SET column1=t2.column1
FROM   table t2
JOIN   table t3 USING (column2)
WHERE  t1.column2=t2.column2;

Se è necessario raggruppare le righe da t2/t3 prima di assegnarle a t1, è necessario utilizzare una sottoquery simile a questa:

UPDATE table t1 SET column1=sq.column1
FROM  (
   SELECT t2.column1, column2
   FROM   table t2
   JOIN   table t3 USING (column2)
   GROUP  BY column2
   ) AS sq
WHERE  t1.column2=sq.column2;

Sebbene, come formulato, non funzionerà perché t2.column1 non è incluso nell'istruzione GROUP BY (dovrebbe essere una funzione aggregata anziché un semplice riferimento di colonna).

Altrimenti, cosa stai cercando di fare esattamente qui?