这是我使用的表中的键的描述屏幕快照: Table keys
表中的每一行代表特定客户在特定时间的购买行为。 因此,典型的行如下所示: typical row(截图)
我需要合并两个客户数据,因此,一个客户每小时将在其行中汇总所有购买价值。
我要执行的伪代码是:
对于每小时(行),添加具有以下内容的行的“购买金额” 客户端ID为“ 518”的所有行的客户端ID为“ 526”
。
起初,我尝试执行此操作,但是由于表中配置了多个键,因此出现了错误:
npm install fabric-client
由于客户端“ 518”已经有相同时间的行,因此我无法执行上述查询来创建新行。
我该如何解决?
答案 0 :(得分:1)
您将需要三个查询: 如果两个客户的记录都具有相同的时间值,则可以求和:
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;
第二个用于处理只有一个(而不是将继续存在)的记录:
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));
请注意-上面的操作也可以使用更新查询来完成(更优雅)。
最后一个删除合并记录的查询:
delete from purchase where client_id=528;
注意-我始终使用client_id值526和528-您可能需要更改这些数字以适合您的目的。