求 MYSQL 下的 update from 更新语句,该怎么解决
求 MYSQL 下的 update from 更新语句
库存表 iv
keyid i_kid qty
1 1 500
2 6 678
...
主表: bm
keyid id
1 20141010001
2 20141011001
...
明细表: bd
keyid bm_kid i_kid qty
1 1 1 200
2 1 1 200
...
UPDATE 库存表后
keyid i_kid qty
1 1 100
2 6 678
...
=================================================
UPDATE iv, bd, bm
SET iv.qty = iv.qty + bd.qty
WHERE
(bd.i_kid = iv.i_kid
AND bd.bm_kid = bm.keyid)
AND bm.keyid = 1
使用以上语句, 因为 明细表: bd里面的记录, i_kid 重复, 执行更新时, 无法将 qty 全部加入进去.
得出的结果如下:
keyid i_kid qty
1 1 300
我需要的结果是:
keyid i_kid qty
1 1 100
请问,该SQL 语句,正确的该如何写?
------解决思路----------------------
库存表 iv
keyid i_kid qty
1 1 500
2 6 678
...
主表: bm
keyid id
1 20141010001
2 20141011001
...
明细表: bd
keyid bm_kid i_kid qty
1 1 1 200
2 1 1 200
...
UPDATE 库存表后
keyid i_kid qty
1 1 100
2 6 678
...
=================================================
UPDATE iv, bd, bm
SET iv.qty = iv.qty + bd.qty
WHERE
(bd.i_kid = iv.i_kid
AND bd.bm_kid = bm.keyid)
AND bm.keyid = 1
使用以上语句, 因为 明细表: bd里面的记录, i_kid 重复, 执行更新时, 无法将 qty 全部加入进去.
得出的结果如下:
keyid i_kid qty
1 1 300
我需要的结果是:
keyid i_kid qty
1 1 100
请问,该SQL 语句,正确的该如何写?
------解决思路----------------------
UPDATE iv, bd, bm
SET iv.qty = iv.qty - bd.qty
from iv inner join (select i_kid,sum(qty) as qty from bd group by i_kid) as bd
on bd.i_kid = iv.i_kid inner join bm on bd.bm_kid = bm.keyid