小编典典

什么是Teradata与Oracle DUAL等效

sql

在Oracle中,我们可以使用SELECT语句将其编写为生成单行。

SELECT 1 AS x FROM dual

什么是Teradata等效产品?


阅读 176

收藏
2021-04-07

共1个答案

小编典典

通常,不需要这样的表

在大多数情况下,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中的关键字,因此需要引用该视图。

2021-04-07