2013-10-17 45 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;