Php 在列中组合具有不同值的重复行

Php 在列中组合具有不同值的重复行,php,mysql,Php,Mysql,我编写了一个脚本,用于导入客户产品库存的CSV。问题是,他们用来跟踪库存的软件中有一个bug,它会复制一个库存值不同的产品 因此,当我导入CSV时,他们会发送给我相同产品的重复行以及不同的库存。例如: id | product | cases | unit -------------------------------- 1 | MF003 | 3 | 7 2 | MF004 | 5 | 6 3 | MF005 | 1

我编写了一个脚本,用于导入客户产品库存的CSV。问题是,他们用来跟踪库存的软件中有一个bug,它会复制一个库存值不同的产品

因此,当我导入CSV时,他们会发送给我相同产品的重复行以及不同的库存。例如:

id  |  product  |  cases  | unit
--------------------------------
1   |  MF003    |   3     |  7
2   |  MF004    |   5     |  6
3   |  MF005    |   1     |  9
4   |  MF005    |   7     |  2
5   |  MF006    |   2     |  1
MF005产品有两行。我需要的是:

id  |  product  |  cases  | unit
--------------------------------
1   |  MF003    |   3     |  7
2   |  MF004    |   5     |  6
3   |  MF005    |   8     |  11
5   |  MF006    |   2     |  1
您会注意到MF005现在是一行,大小写和单位相加正确


我认为更好的方法是使用SELECT查询,而不是事先通过INSERT进行处理,但如果有更聪明的方法通过INSERT进行处理,我肯定会接受它。

您可以立即插入和更新:

CREATE TABLE importdata(
  id INT,
  product VARCHAR(200) DEFAULT "" PRIMARY KEY,
  cases INT,
  unit INT
);

INSERT INTO importdata(id,product,cases,unit) VALUES (3,"MF005",1,9) ON 
DUPLICATE KEY UPDATE cases=cases+1, unit=unit+9;
结果:

3   |  MF005    |   1     |  9
3   |  MF005    |   8     |  11
执行第二次插入:

INSERT INTO importdata(id,product,cases,unit) VALUES (4,"MF005",7,2) ON 
DUPLICATE KEY UPDATE cases=cases+7, unit=unit+2;
结果:

3   |  MF005    |   1     |  9
3   |  MF005    |   8     |  11

您可以立即插入和更新:

CREATE TABLE importdata(
  id INT,
  product VARCHAR(200) DEFAULT "" PRIMARY KEY,
  cases INT,
  unit INT
);

INSERT INTO importdata(id,product,cases,unit) VALUES (3,"MF005",1,9) ON 
DUPLICATE KEY UPDATE cases=cases+1, unit=unit+9;
结果:

3   |  MF005    |   1     |  9
3   |  MF005    |   8     |  11
执行第二次插入:

INSERT INTO importdata(id,product,cases,unit) VALUES (4,"MF005",7,2) ON 
DUPLICATE KEY UPDATE cases=cases+7, unit=unit+2;
结果:

3   |  MF005    |   1     |  9
3   |  MF005    |   8     |  11

您的问题是“如何总结产品重复的案例和单元”,您可以使用。您需要使
产品
成为
唯一键
。然后,您可以在重复键上执行
将值(4,'MF005',7,2)插入到表中(id,product,cases,unit),更新cases=VALUES(cases),unit=VALUES(unit)
更正上述内容-这应该是
。。。在重复密钥更新中,cases=cases+VALUES(cases),unit=unit+VALUES(unit)
@Sean-尝试一下。谢谢@肖恩-这完全奏效了。非常感谢。您的问题是“如何总结产品重复的案例和单元”,您可以使用。您需要使
产品
成为
唯一键
。然后,您可以在重复键上执行
将值(4,'MF005',7,2)插入到表中(id,product,cases,unit),更新cases=VALUES(cases),unit=VALUES(unit)
更正上述内容-这应该是
。。。在重复密钥更新中,cases=cases+VALUES(cases),unit=unit+VALUES(unit)
@Sean-尝试一下。谢谢@肖恩-这完全奏效了。非常感谢。这可能有用。我将尝试适应这个,谢谢!这可能有用。我将尝试适应这个,谢谢!