为什么Common表表达式不适用于INSERT SELECT

时间:2016-03-02 02:00:37

标签: sql common-table-expression netezza

我正在尝试在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 `'(''

1 个答案:

答案 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查询周围不需要括号。它不是子查询。