我已经尝试了常见的PostgreSQL答案,但似乎它不适用于Redshift:
SELECT * FROM VALUES (1) AS q (col1);
ERROR: 42883: function values(integer) does not exist
我需要这个,因为出于某种原因我无法使用UNION ALL
。任何帮助将不胜感激。
答案 0 :(得分:14)
正确的Postgres语法是:
SELECT * FROM (VALUES (1)) AS q (col1);
缺少一组括号
但似乎Redshift甚至不支持VALUES
之外的INSERT
表达式(就像现代的Postgres一样)。因此,对于单行:
SELECT * FROM (SELECT 1) AS q (col1);
对于多行(不使用UNION ALL
请求),您可以使用临时表。注意(per documentation):
会话结束时会自动删除临时表 它是在哪里创建的。
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;