我有一个表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
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 或更高版本。
两个选项。
如果您只需要一个后续查询,则 with 语句(请参阅马的答案)是最简单的。
如果您需要它进行多个后续查询,另一种选择是不使用insert ... returning
,而是create table as
:
CREATE TEMPORARY TABLE foo AS
SELECT value3,value4 FROM table2
警告:如有必要,请在表上创建所需的索引 - 如果这样做,请analyze
索引。