gpt4 book ai didi

sql - 如何从同一个 SELECT 查询插入到两个表

转载 作者:行者123 更新时间:2023-11-29 12:59:52 25 4
gpt4 key购买 nike

我在 PostgreSQL 中有这段代码:

    for row in select .... from .... where ....
loop
insert into A(id1,id2,id3,quantity)
select aa,bb,1,quantity
from func1(row.idfirst);
end loop;

我想用相同的查询执行另一个INSERT,这样我就可以这样做:

    for row in select .... from .... where ....
loop
insert into A(id1,id2,id3,quantity)
select aa,bb,1,quantity
from func1(row.idfirst);

insert into B(first,second,third,forth)
select aa,bb,1,quantity
from func1(row.idfirst);
end loop;

问题在于它是相同代码的冗余...而且 func1 是一个巨大的函数。它需要很长时间才能运行,我并不疯狂地运行它两次。

是否有任何解决方案可以使用相同的 select 查询进行两次插入?

最佳答案

您可以在 PostgreSQL 9.1+ 中使用 CTE,如下所示:

WITH CTE AS (
INSERT INTO A(id1,id2,id3,quantity)
SELECT aa,bb,1,quantity
FROM func1(row.idfirst);
RETURNING id1,id2,id3,quantity
)
INSERT INTO B(first,second,third,forth)
SELECT id1,id2,id3,quantity
FROM CTE;

关于sql - 如何从同一个 SELECT 查询插入到两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361963/

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