2013-11-22 65 views
0

我需要的是以下 一個sql我有表Mysql的由ID分組另一個表的總和更新兩列

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集PX =?,P.DX =?從E組中選擇(Sum(X)by PID)

但我不知道如何獲取select的輸出並將其與P連接並在每行上設置兩個值;

任何幫助,將不勝感激!

回答

0

試試這個

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

@ dianuj的答案是正確的語法。

但是你有一對多的關係。所以,一個PID具有2+值,不保證哪個值被更新。

如果你不關心這個。 @ dianuj的查詢是確定的。但是,UPDATE只允許有一個值。這個問題可能會幫助你。 UPDATE Syntax with ORDER BY, LIMIT and Multiple Tables

+0

是的,這是多對一的,這是如何更新是很重要的。找到這個更新P(通過PID選擇PID,sum(x)爲E組中的x)作爲S set p.x = p.x + s.x,p.dx = s.x其中p.PID = s.PID; – vbbartlett

相關問題