PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

GROUP BY na cláusula UPDATE FROM


A instrução UPDATE não oferece suporte a GROUP BY, consulte a documentação. Se você estiver tentando atualizar t1 com a linha correspondente de t2, use a cláusula WHERE mais ou menos assim:
UPDATE table t1 SET column1=t2.column1
FROM   table t2
JOIN   table t3 USING (column2)
WHERE  t1.column2=t2.column2;

Se você precisar agrupar as linhas de t2/t3 antes de atribuir a t1, precisará usar uma subconsulta mais ou menos assim:
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;

Embora, conforme formulado, isso não funcione porque t2.column1 não está incluído na instrução GROUP BY (teria que ser uma função de agregação em vez de uma referência de coluna simples).

Caso contrário, o que exatamente você está tentando fazer aqui?