我需要一些帮助。来自SELECT WHERE的SQL多个更新记录
我想完全数量的材料在任何帐单中具有相同的ID。
这样
bill no. 001
jellopy x1ea
jellopy x1ea
jellopy x1ea
zargon x1ea
结果应该是
bill no. 001
jellopy x3ea
zargon x1ea
所以,我想要做这样的事情
1.select +总和2.更新3.删除重复
这里是我的老(dbill)表
dbill
id mat qty
01 A1 1
01 A1 1
01 A1 1
01 A2 1
id mat qty
[01 A1 1] < same mat&id = SUM it
[01 A1 1] < same mat&id = SUM it
[01 A1 1] < same mat&id = SUM it
01 A2 1
,这是SQLFiddle测试http://sqlfiddle.com/#!15/b30a3c用相同的材料
1 SUM量
SELECT mat,id,sum(qty) result
FROM dbill
GROUP BY id,mat
[2]得到导致这样
id mat qty
01 A1 3
01 A2 1
[3]所以...我会更新这样
UPDATE dbill
SET qty = result
FROM dbill t
INNER JOIN
(SELECT mat,id,sum(qty) result
FROM dbill
GROUP BY id,mat) s
ON s.id = t.id
AND s.mat = t.mat
的问题是,当我[3] UPDATE这里是结果
id mat qty
01 A1 3
01 A1 3
01 A1 3
01 A2 3
,因为正确的结果应该be
id mat qty
01 A1 3
01 A1 3
01 A1 3
01 A2 1 <
非常感谢您的理解和回答...
[从手动报价](https://www.postgresql.org/docs/current/static/sql-update.html):“*注意,目标表必须** **不出现在from_list *“ –