我正在尝试执行一个非常基本的操作,包括几个步骤:
1.来自table1
的SELECT
数据
1.使用所选表中的id
列从table2
中删除数据
1.将步骤1中选定的表插入table2
我可以想象这会有用
begin;
with temp as (
select id
from table1
)
delete from table2
where id in (select id from temp);
insert into table2 (id)
select id from temp;
commit;
但是我收到一个错误,说在插入步骤中没有定义temp。
我找到的唯一一个关于这个的帖子是this one,但它并没有真正回答我的问题。
有什么想法?
1条答案
按热度按时间vh0rcniy1#
来自Postgres文档:
WITH提供了一种编写用于大型查询的辅助语句的方法。这些语句通常称为公用表表达式或CTE,可以将其视为定义仅为一个查询而存在的临时表。
如果多个查询需要临时表,可以改为: