我使用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影响的所有行中的列。如果有人可以向我展示方法,将不胜感激。
答案 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));