PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

GROUP BY dans la clause UPDATE FROM

L'instruction UPDATE ne prend pas en charge GROUP BY, consultez la documentation. Si vous essayez de mettre à jour t1 avec la ligne correspondante de t2, vous voudriez utiliser la clause WHERE quelque chose comme ceci :

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

Si vous devez regrouper les lignes de t2/t3 avant de les affecter à t1, vous devrez utiliser une sous-requête comme celle-ci :

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;

Bien que tel que formulé, cela ne fonctionnera pas car t2.column1 n'est pas inclus dans l'instruction GROUP BY (il devrait s'agir d'une fonction d'agrégation plutôt que d'une simple référence de colonne).

Sinon, qu'essayez-vous exactement de faire ici ?