使用公共字段合并两个记录并在MySQL和&中增加一个字段。 PHP

时间:2018-05-10 03:34:57

标签: mysql merge increment records

我有一张表如下。我想避免的是在表格中有两个产品ID。如何使用查询合并两个公共字段并增加数量?

cartid |  prodid     | quanity |

   1   |  9226582    | 3       |

   2   |  9226582    | 5       | 

   3   |  7392588    | 1       |

期望的结果是表格应该如下改变:

cartid |  prodid    | quanity |

   1   |  9226582   | 8       |

   3   | 7392588    | 1       |

我已经搜索了答案,但似乎都太复杂了。有没有办法以简单的方式做到这一点?

2 个答案:

答案 0 :(得分:0)

使用group by和min -

检查一下 - http://sqlfiddle.com/#!9/6c4332/4

select min(cartid) cartid ,prodid,sum(quantity) quantity
from 
yourtable
group by prodid
order by cartid

创建具有相同架构的另一个表, 然后

insert into newtable 
select min(cartid) cartid ,prodid,sum(quantity) quantity
    from 
    yourtable
    group by prodid
    order by cartid

重命名新表格

答案 1 :(得分:0)

如果要更新数据库中的表,可以执行以下操作:

create table newtable
   (`cartid` int, `prodid` int unique key, `quantity` int);

insert into newtable
   select * from yourtable order by cartid
   on duplicate key update quantity=newtable.quantity+values(quantity)

select * from newtable

输出:

cartid  prodid      quantity
1       9226582     8
3       7392588     1

如果您对结果感到满意,那么

drop table yourtable
alter table newtable rename to yourtable