我已经尝试了常见的PostgreSQL答案,但似乎不适用于Redshift:
SELECT * FROM VALUES (1) AS q (col1); ERROR: 42883: function values(integer) does not exist
我之所以需要这个是因为出于某种原因我无法使用UNION ALL。任何帮助将不胜感激。
UNION ALL
正确的Postgres语法为:
SELECT * FROM **(** VALUES (1) **)** AS q (col1);
缺少一组括号。 但是似乎Redshift甚至不支持VALUES外部表达式INSERT(就像现代Postgres一样)。因此,对于 单行 :
VALUES
INSERT
SELECT * FROM **(** SELECT 1 **)** AS q (col1);
对于 多行 (不使用UNION ALL类似请求的内容),您可以使用临时表。注意(根据文档):
临时表会在创建会话的会话结束时自动删除。
CREATE TEMP TABLE q(col1 int); INSERT INTO q(col1) VALUES (1), (2), (3); SELECT * FROM q;
如果UNION ALL可以选择:
SELECT 1 AS col1 UNION ALL SELECT 2 UNION ALL SELECT 3;