我需要的是以下的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连接并在每一行上设置两个值;
任何帮助将不胜感激!
答案 0 :(得分:0)
您需要在更新查询中加入,mysql支持多表UPDATE
为Bill 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