我的表格table1
包含id
,value1
和value2
列。
我也有查询
INSERT INTO table1(value1,value2) SELECT value3,value4 FROM table2 RETURNING id
返回一组id。 我想在一些临时表中存储返回值(这些ID)。这样的事情:
INSERT INTO TEMP temp1 INSERT INTO table1(value1,value2) SELECT value3,value4 FROM table2 RETURNING id
我该怎么做?
DBMS是PostgreSQL
答案 0 :(得分:8)
with inserted as (
INSERT INTO table1 (value1,value2)
SELECT value3,value4
FROM table2
RETURNING id
)
insert into temp
select id
from inserted;
这需要Postgres 9.2或更高版本。
答案 1 :(得分:2)
两个选项。
如果您只需要一个后续查询,那么with语句(请参阅马的回答)是最简单的。
如果您需要多个后续查询,则另一个选项是不使用insert ... returning
,而是使用create table as
:
CREATE TEMPORARY TABLE foo AS
SELECT value3,value4 FROM table2
警告:如有必要,可以在桌面上创建所需的索引 - 如果你这样做,则analyze
。