gpt4 book ai didi

sql - 更新第一个匹配行

转载 作者:行者123 更新时间:2023-11-29 12:21:56 27 4
gpt4 key购买 nike

我需要根据表 A 的聚合更新表 B。从表 A 聚合到表 B 的关系是 1:M ,但我只想更新 B 中的一个匹配行(它可以是“许多”中的任何行)。

update B set spent = aggregation.spent
from
(select provider_id,sum(spent) spent from A group by provider_id) aggregation
where B.provider_id = aggregation.provider_id

添加限制是不合法的。

最后,只有来自 B 的匹配记录中的一条需要与更新后的支出一起使用。

CREATE TABLE A
(
id bigserial NOT NULL,
provider_id bigint,
channel int,
spent int
);

CREATE TABLE B
(
id bigserial NOT NULL,
provider_id bigint,
spent int
);

insert into A values (1,1,1,1);
insert into A values (2,1,2,1);
insert into B values (1,1,0);
insert into B values (2,1,0);

最佳答案

SQL Fiddle

update B set spent = s.spent
from
(
select distinct on (provider_id)
be.id, aggregation.spent
from
(
select provider_id, sum(spent) spent
from A
group by provider_id
) aggregation
inner join
B be using (provider_id)
) s
where B.id = s.id

关于sql - 更新第一个匹配行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17760540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com