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

MySQL与PHP实现合并同prodid记录并累加quantity的简单方法

简单解决购物车重复商品合并问题

嘿,这个需求真的不用复杂方案!用基础的SQL分组查询就能轻松搞定,分两种场景给你说:

1. 只想查询合并后的结果(不修改原表)

如果只是想看看合并后的状态,直接用GROUP BY配合SUM()函数就行,还能保留最小的cartid,完全符合你要的结果:

SELECT MIN(cartid) AS cartid, prodid, SUM(quantity) AS quantity
FROM cart
GROUP BY prodid;

解释下:

  • GROUP BY prodid把相同商品ID的记录归为一组
  • SUM(quantity)自动累加每组的数量
  • MIN(cartid)选每组里最小的购物车ID作为合并后的ID,和你期望的输出一致

2. 要修改原表,让它变成合并后的状态

如果想直接把原表改成合并后的样子,步骤也很简单,分四步走:

-- 1. 先把合并好的数据存到临时表
CREATE TEMP TABLE temp_cart AS
SELECT MIN(cartid) AS cartid, prodid, SUM(quantity) AS quantity
FROM cart
GROUP BY prodid;

-- 2. 清空原购物车表(放心,临时表已经存好数据了)
TRUNCATE TABLE cart;

-- 3. 把合并后的数据插回原表
INSERT INTO cart (cartid, prodid, quantity)
SELECT cartid, prodid, quantity FROM temp_cart;

-- 4. 加个唯一约束,从根源杜绝重复!
ALTER TABLE cart ADD CONSTRAINT unique_prodid UNIQUE (prodid);

这步做完,原表就完全变成你想要的样子了,而且最后加的UNIQUE约束,以后再插入相同prodid的记录会直接报错,再也不用担心重复问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:48:11