如何选择RETURNING的结果

问题描述 投票:0回答:1

如何将RETURNING子句的结果放入PostgreSQL中的SELECT中?即,我希望SELECT语句返回RETURNING返回的任何内容。

我尝试了以下两种语法,它们似乎都不起作用:

(1) SELECT (INSERT INTO ... RETURNING *)

(2) SELECT * FROM (INSERT INTO ... RETURNING *) ...

你可能会问,为什么我要这样做,尽管RETURNING已经给了我想要的结果?这是因为我有一个使用两个WITH子句的结构,插入将在第二个,但我也需要第一个的结果。 (见related question。)

备注:遗憾的是,我无法提供具体的SQL查询(因为它是在一个封闭的源代码产品中),但我认为这个问题是通用的,足以在没有这个具体查询的情况下回答。

编辑添加了示例:

假设我们有这个表:

CREATE TABLE test(id INT, name VARCHAR)

这有效:

INSERT INTO test VALUES (1, 'Joe') RETURNING *

我正在尝试做什么,但不起作用:

SELECT INSERT INTO test VALUES (1, 'Joe') RETURNING *

SELECT * FROM INSERT INTO test VALUES (1, 'Joe') RETURNING *

sql postgresql insert-into sql-returning
1个回答
1
投票

insert ... returning *已经返回结果集,不需要向它添加SELECT语句。

但如果你坚持,你可以做到

with i as (
   INSERT INTO test VALUES (1, 'Joe') 
   RETURNING *
)
select *
from i;

但是,它返回的完全相同:

INSERT INTO test VALUES (1, 'Joe') 
RETURNING *
© www.soinside.com 2019 - 2024. All rights reserved.