MySQL:如何在单条UPDATE语句中多次更新同一单元格?
解决MySQL同一SKU库存累加更新问题
原语句的问题在于,MySQL执行多表更新时,对目标表的同一行只会应用一次匹配的更新操作,不会自动累加多行的数值。所以需要先把同SKU的到货数量汇总,再进行更新。
修改后的语句如下:
UPDATE items JOIN ( SELECT column_0 AS sku, SUM(column_1) AS total_qty FROM (VALUES ROW('sku1', 1), ROW('sku1', 2)) newavail GROUP BY column_0 ) aggregated_newavail ON items.sku = aggregated_newavail.sku SET items.available = items.available + aggregated_newavail.total_qty;
关键说明:
- 先通过子查询
aggregated_newavail对新到货的SKU分组,用SUM()计算每个SKU的总到货量 - 再将汇总后的数据与
items表关联,确保每个SKU只执行一次更新,直接把总到货量累加到现有库存中
这样就能实现同一SKU多箱到货的数量一次性累加,sku1的库存会正确增加3。
内容的提问来源于stack exchange,提问作者Sergey
相关产品推荐
相关产品推荐

