什么是Teradata相当于Oracle的DUAL

时间:2018-04-18 14:04:22

标签: sql teradata dual-table

在Oracle中,我们可以使用SELECT语句编写此代码以生成单行。

SELECT 1 AS x FROM dual

Teradata的等价物是什么?

1 个答案:

答案 0 :(得分:2)

通常,不需要这样的表

在大多数情况下,Teradata数据库中确实不需要任何表。以下是有效的SQL(就像H2,PostgreSQL,Redshift,SQL Server,SQLite,Sybase ASE,Sybase SQL Anywhere,Vertica)

SELECT 1
SELECT 1 WHERE 1 = 1

例外

然而,当需要设定操作时,存在例外。例如。这在Teradata中无效:

SELECT 1 UNION ALL SELECT 2

产生此错误:

  

UNION,INTERSECT或MINUS的SELECT必须引用一个表。

但由于FROM子句通常是可选的,因此可以很容易地模拟DUAL表,如下所示:

SELECT 1 FROM (SELECT 1 AS "DUMMY") AS "DUAL"
UNION ALL 
SELECT 2 FROM (SELECT 1 AS "DUMMY") AS "DUAL"

兼容性

如果需要使用Oracle等实现兼容性,则可以轻松创建一个行为类似Oracle的双重视图:

CREATE VIEW "DUAL" AS (SELECT 1 AS "DUMMY");

请注意,DUAL是Teradata中的关键字,因此需要引用该视图。