sql >> Database >  >> RDS >> PostgreSQL

GROUP BY in de clausule UPDATE FROM

Het UPDATE-statement ondersteunt GROUP BY niet, zie de documentatie. Als je t1 probeert bij te werken met de overeenkomstige rij van t2, zou je de WHERE-component willen gebruiken, zoiets als dit:

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

Als u de rijen van t2/t3 moet groeperen voordat u ze aan t1 toewijst, moet u een subquery gebruiken, zoiets als dit:

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;

Hoewel het zoals geformuleerd niet werkt omdat t2.column1 niet is opgenomen in de GROUP BY-instructie (het zou een aggregatiefunctie moeten zijn in plaats van een eenvoudige kolomverwijzing).

Wat probeer je hier anders precies te doen?




  1. Maak een Database Mail Account (SSMS)

  2. Tracefiles verwijderen met ADRCI

  3. Verwijder rare tekens (A met hoed) uit de SQL Server varchar-kolom

  4. Waarom kan ik geen kolomaliassen gebruiken in de volgende SELECT-expressie?