Php 在列中组合具有不同值的重复行
我编写了一个脚本,用于导入客户产品库存的CSV。问题是,他们用来跟踪库存的软件中有一个bug,它会复制一个库存值不同的产品 因此,当我导入CSV时,他们会发送给我相同产品的重复行以及不同的库存。例如:Php 在列中组合具有不同值的重复行,php,mysql,Php,Mysql,我编写了一个脚本,用于导入客户产品库存的CSV。问题是,他们用来跟踪库存的软件中有一个bug,它会复制一个库存值不同的产品 因此,当我导入CSV时,他们会发送给我相同产品的重复行以及不同的库存。例如: id | product | cases | unit -------------------------------- 1 | MF003 | 3 | 7 2 | MF004 | 5 | 6 3 | MF005 | 1
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-尝试一下。谢谢@肖恩-这完全奏效了。非常感谢。这可能有用。我将尝试适应这个,谢谢!这可能有用。我将尝试适应这个,谢谢!