等效于 Amazon Redshift 中的 T-SQL 表值构造函数?

Posted

技术标签:

【中文标题】等效于 Amazon Redshift 中的 T-SQL 表值构造函数?【英文标题】:Equivalent for T-SQL Table Value Constructor in Amazon Redshift? 【发布时间】:2014-12-11 18:30:40 【问题描述】:

我来自 T-SQL 背景,并且习惯于将表值构造函数用于各种目的(例如,将代码与人类可读的字符串匹配的查找)。代码通常看起来像这样......

SELECT a, b FROM (VALUES (1, 2), (3, 4), (5, 6), (7, 8), (9, 10) ) AS MyTable(a, b);

我已尝试在 Amazon RedShift 中运行此代码,但无济于事。我还翻阅了文档以寻找等价物,但我似乎找不到任何东西。有没有等价物?

【问题讨论】:

Postgres 支持这个(至少从 8.3 开始)。似乎 redshift 是基于 真的 旧版本的 Postgres,如果它在那里不起作用的话。 @a_horse_with_no_name 根据标签 wiki,“Redshift 基于 PostgreSQL 8.0。”所以,是的,现在已经很古老了,大概要么遗漏了一大堆东西,要么在功能集上大相径庭。 【参考方案1】:

您只是将这些用作测试的静态值还是什么?您始终可以在子查询中执行多个 UNION ALL:

注意:我相信这应该可以正常工作,我更习惯于 Oracle 和 SqlServer,但是无论平台如何,您都应该可以使用类似的东西......

SELECT a, b
FROM 
(
   SELECT 1 AS a, 2 AS b
   UNION ALL
   SELECT 3 AS a, 4 AS b
   UNION ALL
   SELECT 5 AS a, 6 AS b
) MyTable;

【讨论】:

请注意,如果您希望简洁而不是对称,则无需在第一行之后重复“as a”和“as b”。

以上是关于等效于 Amazon Redshift 中的 T-SQL 表值构造函数?的主要内容,如果未能解决你的问题,请参考以下文章

仅当表存在时如何删除 Amazon Redshift 中的表

Amazon Redshift 中的 ETL 与 ELT [关闭]

适用于 Amazon Redshift 的 REST API

amazon-redshift 中的 CONCAT 函数

Amazon EMR 与 Amazon Redshift

Amazon Redshift 安全组问题