2013-10-17 47 views
0

我試着如何通過ID總結ID兩個表,並更新了一句:MySQL的總和兩個表的字段和更新

STOCKA

--------- 
|P | U | 
|-------| 
| 1 | 1 | 
| 2 | 0 | 
| 3 | 3 | 
--------- 

STOCKB

--------- 
|P | U | 
|-------| 
| 1 | -3 | 
| 2 | -2 | 
| 3 | -1 | 
--------- 

結果我想:

STOCKA

-------- 
|P | U | 
|--------| 
| 1 | -2 | 
| 2 | -2 | 
| 3 | 2 | 
--------- 

我的查詢:

UPDATE STOCKA,STOCKB 
SET STOCKA.U = STOCKA.U - ABS(STOCKB.U) 
WHERE 
STOCKA.P = STOCKB.P 
+0

查詢的問題是什麼? –

+0

在我的查詢結果值是錯誤的,我使用hjpotter92的答案。 謝謝:) – sarasa

回答

0

使用JOIN,而不是試圖通過在UPDATE語句兩個表:

UPDATE STOCKA a 
JOIN STOCKB b 
    ON a.P = b.P 
SET a.U = a.U - ABS(b.U) 
+0

謝謝!修改我的帖子和正確的答案。 這太棒了! :d – sarasa

0

在你的問題查詢應該工作,如果只有一個行在每個P的「b」表中。如果可以有多行,則先聚合然後加入:

UPDATE STOCKA a join 
     (select P, sum(abs(u)) as bu 
     from STOCKB 
     group by P 
     ) b 
     on a.P = b.P 
    SET a.U = a.U - b.bu;