fez*_*fez 15 sql common-table-expression amazon-web-services amazon-redshift
根据Redshift WITH Clause 文档,您可以将WITH子句与INSERT INTO...SELECT
语句一起使用.但是在测试时,我收到以下错误.这是不可能的,还是我的语法错了?
CREATE TABLE TestCTEInsert (SomeTimestamp TIMESTAMP);
WITH CTE AS
(SELECT GETDATE() as SomeTimestamp)
INSERT INTO TestCTEInsert
(SomeTimestamp) SELECT SomeTimestamp from CTE;
Run Code Online (Sandbox Code Playgroud)
错误:42601:"插入"或附近的语法错误
有趣的是,它确实支持插入新表,即
WITH CTE AS
(SELECT GETDATE() as SomeTimestamp)
INSERT SomeTimestamp INTO NewTable
SELECT SomeTimestamp from CTE;
Run Code Online (Sandbox Code Playgroud)
命令成功完成(受影响的1行)
编辑:只是为了确认,我在使用INTEGER
列而不是TIMESTAMP
:时得到相同的错误:
CREATE TABLE TestCTE (SomeInt INTEGER);
WITH CTE AS
(SELECT 1 as SomeInt)
INSERT INTO TestCTEInsert
SELECT SomeInt from CTE;
Run Code Online (Sandbox Code Playgroud)
错误:42601:"插入"或附近的语法错误
Ade*_*ite 24
尝试将CTE放入插入物中(不确定是否超过了点)
INSERT INTO TestCTEInsert
WITH CTE AS
(SELECT CURRENT_TIMESTAMP as SomeTimestamp)
SELECT SomeTimestamp from CTE;
Run Code Online (Sandbox Code Playgroud)
该;
终止的声明,所以它需要去的说法,中间不显山露水的结尾:
您可以通过两种方式执行此操作,使用a create table as select
create table TestCTEInsert
as
WITH CTE AS
(
SELECT current_timestamp as SomeTimestamp
)
SELECT SomeTimestamp
from CTE; -- ; only at the end
Run Code Online (Sandbox Code Playgroud)
或者分两步:
CREATE TABLE TestCTEInsert (SomeTimestamp TIMESTAMP); -- end this with a ;
insert into TestCTEInsert
WITH CTE AS
(
SELECT current_timestamp as SomeTimestamp
)
SELECT SomeTimestamp
from CTE; -- ; only at the end
Run Code Online (Sandbox Code Playgroud)
以上是在一个vanilla Postgres安装上运行的,我无法访问RDS
归档时间: |
|
查看次数: |
8151 次 |
最近记录: |