PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

GROUP BY in der UPDATE FROM-Klausel

Die UPDATE-Anweisung unterstützt GROUP BY nicht, siehe Dokumentation. Wenn Sie versuchen, t1 mit der entsprechenden Zeile von t2 zu aktualisieren, sollten Sie die WHERE-Klausel etwa so verwenden:

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

Wenn Sie die Zeilen von t2/t3 gruppieren müssen, bevor Sie sie t1 zuweisen, müssen Sie eine Unterabfrage wie die folgende verwenden:

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;

Obwohl das so formuliert nicht funktioniert, weil t2.column1 nicht in der GROUP BY-Anweisung enthalten ist (es müsste eher eine Aggregatfunktion als eine einfache Spaltenreferenz sein).

Ansonsten, was genau versuchst du hier zu tun?