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