更新查询从库存表中减去相同的销售模型行?

时间:2019-07-29 13:00:38

标签: mysql

我有两个MySQL表:

> Sale 
--------------------------------------------------------
 ID      customer       model                    qty
--------------------------------------------------------
 1         Ali          H46                      1
 1         aslam        H46                      1
 1         kasif        H46                      1
 1         umer         H46                      1
 1         naveed       H46                      1
---------------------------------------------------------

> Stock

---------------------------------------------------------
ID        model               qty
---------------------------------------------------------
1         H46                 40
1         H47                 30
1         H48                 20
1         H49                 60
1         H50                 20
---------------------------------------------------------

我应用的MySQL查询

UPDATE sale AS T1
INNER JOIN stock T2
    ON T1.model = T2.model
SET T2.qty = (T2.qty - T1.qty)

在库存表中,只有一次数量更新不会减去库存表中的总销售数量。

我要从库存中减去所有出售的数量。但是我的查询结果返回了库存的1条记录更新。

1 个答案:

答案 0 :(得分:0)

我认为您需要加入Sale表的汇总:

UPDATE stock st
INNER JOIN
(
    SELECT model, SUM(qty) AS qty
    FROM sale
    GROUP BY model
) s
    ON st.model = s.model
SET
    st.qty = st.qty - s.qty;

内部联接更新(而不是左联接更新)在这里应该没问题,因为销售量为零的模型始终不需要更新库存。