我正在尝试在INSERT中使用公用表表达式。 当我这样做时:
with A as (select col1,col2 from table1) select * from A
它有效 但是当我这样做时:
with A as (select col1,col2 from table1)
insert into table2 (col1,col2) (select col1,col2 from A)
我明白了:
found "INSERT" (at char XXXXX) expecting `SELECT' or `'(''
答案 0 :(得分:2)
您的查询应该适用于大多数数据库。但是,Oracle和早期版本的Postgres将CTE放在select
旁边。因此,如果您使用的是Oracle早期版本的Postgres或Postgres派生数据库:
insert into table2 (col1, col2)
with A as (select col1, col2 from table1)
select col1, col2 from A;
此外,select
查询周围不需要括号。它不是子查询。