You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何通过SELECT批量更新Inventory表数据

批量更新库存表的SQL实现方案

针对你的需求,直接通过SQL批量更新就能替代应用层循环的低效操作,下面是两种可靠的实现方式:

方式一:先聚合明细数据(推荐)

如果InventoryTransferDetails中同一CTransferID+CBarcode可能存在多条记录,先聚合求和再更新,避免重复累加:

UPDATE i
SET i.CQuantity = i.CQuantity + td.TotalQuantity
FROM Inventory i
JOIN (
    SELECT CBarcode, SUM(CQuantity) AS TotalQuantity
    FROM InventoryTransferDetails
    WHERE CTransferID = 1009
      AND CBarcode IN ('ORQ', 'MKX')
    GROUP BY CBarcode
) td ON i.CBarcode = td.CBarcode
WHERE i.CSite = 'Store';

方式二:直接关联明细(适用于单条明细对应单条码)

如果确认InventoryTransferDetails中CTransferID=1009且条码为ORQ、MKX的记录各只有一条,也可以直接关联更新:

UPDATE i
SET i.CQuantity += td.CQuantity
FROM Inventory i
JOIN InventoryTransferDetails td 
  ON i.CBarcode = td.CBarcode
WHERE td.CTransferID = 1009
  AND td.CBarcode IN ('ORQ', 'MKX')
  AND i.CSite = 'Store';

关键说明:

  • 替换了你示例中的GB前缀表名,和你给出的表名对应一致
  • 通过IN ('ORQ', 'MKX')精准过滤目标条码,避免更新其他无关数据
  • 第一种方式通过GROUP BY聚合同条码的总数量,确保即使明细有多条记录,也只会累加一次总数量,不会重复更新
  • 使用JOIN替代子查询关联,比你示例中的写法更高效清晰

内容的提问来源于stack exchange,提问作者chris_techno25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 22:47:20