首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -对具有相同键和相同键的行合并列值

问MySQL -对具有相同键和相同键的行合并列值
EN

Stack Overflow用户
提问于 2018-08-14 20:38:43
回答 1查看 455关注 0票数 0

下面是我使用的表中键的描述屏幕截图:表键

表中的每一行都表示特定客户在特定时间内的购买情况。所以一个典型的行应该是:典型行 (截图)

我需要合并两个客户端数据,这样一个客户端将在每小时的行中将所有的采购值汇总在一起。

在伪代码中,我要执行的是:

对于每一小时(行),将客户端id为“526”的行的“购买金额”添加到所有具有客户端id“518”的行中。

。

首先,我尝试执行此操作,但是由于表中配置了多个键,所以得到了一个错误:

代码语言:javascript
复制
UPDATE purchases set client id = 518 where client id = 526;

由于客户端“518”已经有相同时间的行,所以我无法执行上面创建新行的查询。

我该怎么处理呢?

EN

回答 1

Stack Overflow用户

发布于 2018-08-14 21:04:12

您将需要三个查询:如果两个客户都存在具有相同时间值的记录,则需要一个查询来执行和:

代码语言:javascript
复制
update purchase p1 
    inner join purchase p2 on p2.client_id=528 and p2.date=p1.date
set p1.amount = p1.amount + p2.amount
where p1.client_id=526;

第二个用于处理只有一个记录存在的记录(而不是将继续存在的记录):

代码语言:javascript
复制
insert into purchase 
    (select 526, date, amount 
     from purchase p1 
     where p1.client_id=528 and 
        not exists (select * 
                    from purchase p2 
                    where p2.client_id=526 and 
                          p2.date=p1.date));

注意-使用update查询可能也可以完成上面的操作(而且更优雅)。

以及删除合并记录的最后查询:

代码语言:javascript
复制
delete from purchase where client_id=528;

注意-我在整个过程中使用了client_id值526和528 -您可能需要修改这些数字以满足您的目的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51849441

复制
相关文章

相似问题

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