Mysql根据id分组的另一个表的总和更新两列

时间:2013-11-22 20:42:43

标签: mysql

我需要的是以下的sql 我有桌子

P which has columns PID, X, DX (PID is PK)
E which as columns EID, PID, X (EID is PK)

表E有每个PID的多个条目

不起作用的陈述是

update P,E set P.X=P.X+E.X, P.DX = E.X where P.PID = E.PID

我认为它应该是更新P设置P.X = ?, P.DX =?选择(通过PID从E组中求和(X))

但我不知道如何获取select的输出并将其与P连接并在每一行上设置两个值;

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

您需要在更新查询中加入,mysql支持多表UPDATEBill karvin建议mysql-syntax-for-join-update

UPDATE P  JOIN E ON (P.PID = E.PID)
SET P.X=P.X+E.X, P.DX = E.X 

答案 1 :(得分:0)

试试这个

update P set P.X= (select sum(x) from E where e.pid=p.pid)

答案 2 :(得分:0)

@ dianuj的回答是正确的语法。

但你有一对多的关系。所以,一个PID有2个以上的值,没有保证更新哪个值。

如果你不关心这一点。 @dianuj的查询没问题。但是,UPDATE只允许一个值。这个问题可能对你有帮助。 UPDATE Syntax with ORDER BY, LIMIT and Multiple Tables