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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新查询从库存表中减去相同的销售模型行?相关的知识,希望对你有一定的参考价值。

我有两个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条记录更新。

答案

我认为您需要加入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;

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

以上是关于更新查询从库存表中减去相同的销售模型行?的主要内容,如果未能解决你的问题,请参考以下文章

cakephp 没有将更新值保存到相关表,但没有错误

从不同的记录更新产品表数量

MySQL 查询 - 创建一个触发器,在销售发生后更新库存水平

select 多表关联查询

查询驱动视图和实际视图不返回相同的结果

使用其他行的数据更新同一表中的行 SQL