MySQL-使用相同键合并具有相同键的行的列值

MySQL-使用相同键合并具有相同键的行的列值,mysql,sql,database,Mysql,Sql,Database,下面是我使用的表中键的描述屏幕截图: 表中的每一行表示特定客户在特定时间内的购买情况。 因此,一个典型的行是这样的: (截图) 我需要合并两个客户的数据,这样一个客户将在他的行中汇总每小时的所有购买值 在伪代码中,我要执行的是: 对于每小时(行),添加具有以下内容的行的“购买金额” 将客户端id为“526”的所有行添加到客户端id为“518”的所有行 起初,我试图执行此操作,但由于表中配置了多个键,因此出现了一个错误: UPDATE purchases set client id = 518

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

表中的每一行表示特定客户在特定时间内的购买情况。 因此,一个典型的行是这样的: (截图)

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

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

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

起初,我试图执行此操作,但由于表中配置了多个键,因此出现了一个错误:

UPDATE purchases set client id = 518 where client id = 526;
由于客户端“518”在相同的时间内已经有行,因此我无法执行上面创建新行的查询


我应该如何解决这个问题?

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

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;
第二个用于处理仅存在一条记录(而不是将继续存在的记录)的记录:

注意-上述操作也可以使用更新查询来完成(而且更优雅)

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

delete from purchase where client_id=528;

注意-我在整个过程中使用了客户id值526和528-您可能需要更改这些数字以符合您的目的。

非常感谢!SSSSSSSSSSSSS
delete from purchase where client_id=528;