PSQL 中的 CTE/with 子句
Posted
技术标签:
【中文标题】PSQL 中的 CTE/with 子句【英文标题】:CTE/with clause in PSQL 【发布时间】:2018-05-23 18:19:22 【问题描述】:我得到错误:
在执行以下操作时,“INSERT”* 处或附近出现语法错误:
WITH
sq as (select * from input_client)
INSERT INTO cleaned
select *
from weekly
cross join sq;
请参阅(红色)语法手册: https://www.postgresql.org/docs/9.1/static/queries-with.html
【问题讨论】:
如果您使用Greenplum,为什么还要阅读 Postgres 手册? @a_horse_with_no_name 因为 Greenplum 基于 PostgreSQL 8.3。 PostgreSQL 直到 8.4 之后才引入具有 DML 的 CTE,即使在 Github 上的当前代码库中,Greenplum 也不支持 CTE 的 DML 部分。 @JonRoberts 更有理由阅读 Greenplum 手册而不是 Postgres 手册 【参考方案1】:INSERT INTO cleaned
select w.*
from weekly w, input_client;
如果你只想要 input_client 和 week 的笛卡尔积,就这样写。
【讨论】:
以上是关于PSQL 中的 CTE/with 子句的主要内容,如果未能解决你的问题,请参考以下文章
使用 JDBCTemplate 在“IN”子句中将 List<String> 作为查询参数传递时获取 PSQL 异常