sql >> Databáze >  >> RDS >> PostgreSQL

GROUP BY v klauzuli UPDATE FROM

Příkaz UPDATE nepodporuje GROUP BY, viz dokumentace. Pokud se pokoušíte aktualizovat t1 odpovídajícím řádkem z t2, měli byste použít klauzuli WHERE asi takto:

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

Pokud potřebujete seskupit řádky z t2/t3 před přiřazením k t1, budete muset použít poddotaz něco takového:

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;

I když jak je formulováno, nebude to fungovat, protože t2.column1 není zahrnut v příkazu GROUP BY (muselo by to být agregační funkce spíše než jednoduchý odkaz na sloupec).

Jinak, co přesně se tady snažíte dělat?




  1. Jak RAND() funguje v MariaDB

  2. Spravovaný ovladač ODP.NET se nezobrazuje v dialogovém okně Zdroj dat

  3. Php volající skript zálohování databáze sqlserver, záložní soubor vytvořen a poté odstraněn

  4. Jak vypočítat rozdíl mezi dvěma časovými razítky v MySQL