更新受组影响的所有行

时间:2018-07-30 07:35:07

标签: sql oracle group-by sql-update

我使用PostgreSql进行以下查询:

SELECT SUM(table.a) 
FROM table 
GROUP BY table.b
HAVING SUM(table.a) > x;

现在,我需要更新受先前查询影响的所有行中的列。

我尝试了以下解决方案:

UPDATE table 
SET c = 'value' 
WHERE (SELECT SUM(table.a) 
       FROM table 
       GROUP BY table.b) > x;

但出现以下错误

  

一个子请求返回的一行不只是一个表达式

我找不到解决方案来更新受group by影响的所有行中的列。如果有人可以向我展示方法,将不胜感激。

1 个答案:

答案 0 :(得分:2)

您只想为 table.a 列值之和超过定义的 x

所以,我相信您想使用此功能:

UPDATE TABLE
   SET c = 'value'
 WHERE b IN (SELECT b
               FROM TABLE
              GROUP BY table.b
             HAVING SUM (table.a) > x));