gpt4 book ai didi

sql - Postgresql - INSERT INTO 基于多个 SELECT

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

我打算基于几个SELECT在Postgresql中写一个INSERT INTO请求但是没有成功。我有一个包含我选择的数据的表 (srctab),另一个包含我插入数据的表 (dsttab)。这是我运行的:

INSERT INTO dsttab (dstfld1, dstfld2) WITH
t1 AS (
SELECT srcfld1
FROM srctab
WHERE srcfld3 ='foo'
),
t2 AS (
SELECT srcfld5
FROM srctab
WHERE srcfld6 ='bar'
) select srcfld1, srcfld5 from srctab;

你能帮忙完成这项工作吗?谢谢!

最佳答案

注意:我猜你想在这里做什么。我的猜测是您想要插入一行,其中包含 CTE 的值(即 WITH block 。)。如果语法有效,您编写的查询将为 srctab 中的 every 行向 dsttab 中插入一行。


在这里您真的不需要 CTE。 CTE 应该只在需要多次引用同一个子查询时使用;这就是他们存在的目的。 (偶尔,您可以稍微滥用它们来控制 PostgreSQL 中的某些性能方面,但在其他数据库中并非如此,无论如何都应该避免这种情况。)

只需将您的查询排成一行即可:

INSERT INTO dsttab (dstfld1, dstfld2)
VALUES (
(SELECT srcfld1
FROM srctab
WHERE srcfld3 ='foo'),
(SELECT srcfld5
FROM srctab
WHERE srcfld6 ='bar')
);

这里的关键点是用括号将子查询括起来。

关于sql - Postgresql - INSERT INTO 基于多个 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876978/

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