PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

GROUP BY w klauzuli UPDATE FROM

Instrukcja UPDATE nie obsługuje funkcji GROUP BY, zobacz dokumentację. Jeśli próbujesz zaktualizować t1 o odpowiedni wiersz z t2, powinieneś użyć klauzuli WHERE mniej więcej tak:

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

Jeśli chcesz pogrupować wiersze z t2/t3 przed przypisaniem do t1, musisz użyć podzapytania podobnego do tego:

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;

Chociaż jak zostało to sformułowane, to nie zadziała, ponieważ t2.kolumna1 nie jest uwzględniona w instrukcji GROUP BY (musiałaby to być funkcja agregująca, a nie proste odwołanie do kolumny).

W przeciwnym razie, co dokładnie próbujesz tutaj zrobić?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL, SELECT z max id

  2. jak mogę utworzyć nowy plik XML z istniejącej bazy danych w bazie danych PostgreSQL za pomocą java?

  3. Postępy w aktualizacji online

  4. Przegląd różnych metod skanowania w PostgreSQL

  5. Używanie puli połączeń PgBouncer dla PostgreSQL z ClusterControl 1.8.2