更新受组影响的所有行
Posted
技术标签:
【中文标题】更新受组影响的所有行【英文标题】:Update all rows affected by a group by 【发布时间】:2018-07-30 07:35:06 【问题描述】:我有以下使用 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】:您只想为那些 table.a 列值总和超过您定义的 x的值列表中具有 table.b 的行更新表行>
所以,我相信你想用这个:
UPDATE TABLE
SET c = 'value'
WHERE b IN (SELECT b
FROM TABLE
GROUP BY table.b
HAVING SUM (table.a) > x));
【讨论】:
您可以通过从最里面的查询返回 b 并删除中间的查询来简化此操作 @SamiKuhmonen 你完全正确!谢谢你的意见:)以上是关于更新受组影响的所有行的主要内容,如果未能解决你的问题,请参考以下文章