【发布时间】:2016-04-23 12:07:14
【问题描述】:
根据 Redshift WITH 子句 documentation,您可以将 WITH 子句与 INSERT INTO...SELECT 语句一起使用。但是,在测试时,我收到以下错误。这是不可能的,还是我的语法错误?
CREATE TABLE TestCTEInsert (SomeTimestamp TIMESTAMP);
WITH CTE AS
(SELECT GETDATE() as SomeTimestamp)
INSERT INTO TestCTEInsert
(SomeTimestamp) SELECT SomeTimestamp from CTE;
错误:42601:“插入”处或附近的语法错误
有趣的是,它确实支持插入新表,即
WITH CTE AS
(SELECT GETDATE() as SomeTimestamp)
INSERT SomeTimestamp INTO NewTable
SELECT SomeTimestamp from CTE;
命令成功完成(受影响的 1 行)
编辑:确认一下,我在使用INTEGER 列而不是TIMESTAMP 时遇到同样的错误:
CREATE TABLE TestCTE (SomeInt INTEGER);
WITH CTE AS
(SELECT 1 as SomeInt)
INSERT INTO TestCTEInsert
SELECT SomeInt from CTE;
错误:42601:“插入”处或附近的语法错误
【问题讨论】:
-
尝试删除插入中的(SomeTimestamp)
-
感谢您的建议。这将返回相同的错误:
ERROR: 42601: syntax error at or near "insert" -
据我所知,您不能在时间戳列中插入显式值。
-
感谢@AksheyBhat,但我认为这不是问题所在。我使用整数列而不是时间戳重新创建了它,并得到了相同的错误消息。
-
;位于语句的结尾,而不是中间的某处。
标签: sql amazon-web-services common-table-expression amazon-redshift