2015-01-30 4 views
4

Я уже пробовал общий PostgreSQL ответ, но кажется, что он не работает с Redshift:Как выбрать несколько строк, заполненных константами в Amazon Redshift?

SELECT * FROM VALUES (1) AS q (col1); 

ERROR: 42883: function values(integer) does not exist 

мне это нужно, потому что по какой-то причине я не могу использовать UNION ALL. Любая помощь будет оценена.

ответ

3

Правильный синтаксис 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; 
+0

спасибо Эрвин :) – Inferno1892

Смежные вопросы