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

GROUP BY i UPDATE FROM-klausulen

UPDATE-sætningen understøtter ikke GROUP BY, se dokumentationen. Hvis du forsøger at opdatere t1 med den tilsvarende række fra t2, vil du gerne bruge WHERE-sætningen noget som dette:

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

Hvis du har brug for at gruppere rækkerne fra t2/t3, før du tildeler til t1, skal du bruge en underforespørgsel som denne:

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;

Selvom det som formuleret ikke virker, fordi t2.column1 ikke er inkluderet i GROUP BY-sætningen (det skal være en aggregeret funktion snarere end en simpel kolonnehenvisning).

Hvad er det ellers, du prøver at gøre her?




  1. Sådan håndteres booleske værdier i SQLite ved hjælp af JavaScript-proxies

  2. Lower()-funktionen på internationale tegn i postgresql

  3. Galera Cluster Recovery 101 - Et dybt dyk ind i netværkspartitionering

  4. Synkronisering af databasestruktur mellem applikationer