在Oracle中,我们可以使用SELECT语句将其编写为生成单行。
SELECT
SELECT 1 AS x FROM dual
什么是Teradata等效产品?
在大多数情况下,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表非常简单,如下所示:
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中的关键字,因此需要引用该视图。