首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在列中组合具有不同值的重复行

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

Stack Overflow用户
提问于 2015-07-15 11:37:38
回答 1查看 48关注 0票数 1

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

因此,当我导入CSV时,他们发送给我的是具有不同库存的相同产品的重复行。示例:

代码语言:javascript
复制
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产品有两行。我需要的是:

代码语言:javascript
复制
id  |  product  |  cases  | unit
--------------------------------
1   |  MF003    |   3     |  7
2   |  MF004    |   5     |  6
3   |  MF005    |   8     |  11
5   |  MF006    |   2     |  1

您会注意到,MF005现在是一行,大小写和单位都正确地加在一起了。

我认为这里更好的方法是使用SELECT查询,而不是预先通过INSERT处理它,但是如果INSERTing有更聪明的方法来实现这一点,我当然愿意接受。

EN

回答 1

Stack Overflow用户

发布于 2015-07-15 11:53:48

您可以一次插入和更新:

代码语言:javascript
复制
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;

结果如下:

代码语言:javascript
复制
3   |  MF005    |   1     |  9

执行第二个插入:

代码语言:javascript
复制
INSERT INTO importdata(id,product,cases,unit) VALUES (4,"MF005",7,2) ON 
DUPLICATE KEY UPDATE cases=cases+7, unit=unit+2;

结果如下:

代码语言:javascript
复制
3   |  MF005    |   8     |  11
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31421084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档