Как выбрать несколько строк, заполненных константами в Amazon Redshift?
Я уже пробовал обычный ответ PostgreSQL, но, похоже, он не работает с Redshift:
SELECT * FROM VALUES (1) AS q (col1);
ERROR: 42883: function values(integer) does not exist
Мне это нужно, потому что по какой-то причине я не могу использовать UNION ALL
. Любая помощь будет очень признательна.1 ответ:
Правильный синтаксис Postgres был бы:
SELECT * FROM (VALUES (1)) AS q (col1);
Набор скобок отсутствовал.
Но похоже, что Redshift даже не поддерживает выражение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;