我正在尝试如何通过id两个表对id进行求和并更新一个:
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)
使用JOIN而不是尝试在UPDATE语句中传递两个表:
UPDATE STOCKA a
JOIN STOCKB b
ON a.P = b.P
SET a.U = a.U - ABS(b.U)
答案 1 :(得分: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;