MySQL中如何修改现有表合并重复行并累加Qty列?
MySQL合并重复行并累加Qty(原表直接修改)
操作步骤(假设表名为your_table,需替换为实际表名)
添加临时主键(若表无唯一标识列)
如果你的表没有主键或唯一非重复列,先添加一个自增临时列来区分每一行:ALTER TABLE your_table ADD COLUMN temp_id INT AUTO_INCREMENT PRIMARY KEY;更新保留行的Qty为累加总和
对Account、Name、Item分组统计总Qty,将每组中临时ID最小的行的Qty更新为总和:UPDATE your_table t1 JOIN ( SELECT Account, Name, Item, SUM(Qty) AS total_qty FROM your_table GROUP BY Account, Name, Item ) t2 ON t1.Account = t2.Account AND t1.Name = t2.Name AND t1.Item = t2.Item SET t1.Qty = t2.total_qty WHERE t1.temp_id = ( SELECT MIN(temp_id) FROM your_table WHERE Account = t1.Account AND Name = t1.Name AND Item = t1.Item );删除重复行
删除每组中临时ID不是最小的重复行:DELETE t1 FROM your_table t1 JOIN your_table t2 ON t1.Account = t2.Account AND t1.Name = t2.Name AND t1.Item = t2.Item WHERE t1.temp_id > t2.temp_id;移除临时列(可选)
若不需要临时列,执行以下语句删除:ALTER TABLE your_table DROP COLUMN temp_id;
注意事项
- 操作前务必备份数据:UPDATE和DELETE操作不可逆,建议先导出表数据或创建备份表。
- 若表已有主键或唯一非重复列,可直接用该列替代
temp_id,无需添加临时列。
内容的提问来源于stack exchange,提问作者jbigs89
相关产品推荐
相关产品推荐

