Amazon redshift 如何在红移中选择值列表?

Amazon redshift 如何在红移中选择值列表?,amazon-redshift,Amazon Redshift,以下查询适用于Postgresql,但不适用于红移: WITH bar (baz) AS (VALUES ('a'), ('b'), ('c')) SELECT * from bar; 给 baz --- a b c 如何在红移中复制此行为?不幸的是,联合是唯一的方法: WITH bar (baz) AS (select 'a' union select 'b' union select 'c') SELECT * from bar; 创建一个表并首先插入值。然后使用该表。UNIO

以下查询适用于Postgresql,但不适用于红移:

WITH bar (baz) AS
    (VALUES ('a'), ('b'), ('c'))
SELECT * from bar;

baz
---
a
b
c

如何在红移中复制此行为?

不幸的是,联合是唯一的方法:

WITH bar (baz) AS
(select 'a' union select 'b' union select 'c')
SELECT * from bar;

创建一个表并首先插入值。然后使用该表。
UNION ALL
在这里是首选,因为它会更快;你不想让它检查重复项。是的,我知道它更快,而且我总是在从应该具有唯一值的表中进行选择时使用UNION ALL,但我不认为这种效果在硬编码的值列表上是明显的,直到你达到某个数量为止。确保对小数据集没有影响,但是,向从你的例子中寻找和学习的人推广最佳实践总是很好的。尽管SQL是一种基于集合的语言,但我发现我通常希望
UNION ALL
,除非我明确尝试重复数据消除。