【问题标题】:Update query subtract same sale model rows from stock table?更新查询从库存表中减去相同的销售模型行?
【发布时间】:2019-07-29 13:00:38
【问题描述】:

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

【问题讨论】:

标签: mysql


【解决方案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;

内部连接更新(而不是左连接更新)在这里应该没问题,因为销售为零的模型无论如何都不需要更新库存。

【讨论】:

  • Tim Biegeleisen 感谢此查询在匹配模型上的工作?
  • 请使用解释此要求的示例数据编辑您的问题。
猜你喜欢
  • 1970-01-01
  • 2015-10-10
  • 2014-12-26
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多