Sql Teradata与Oracle的双重功能是什么

Sql Teradata与Oracle的双重功能是什么,sql,teradata,dual-table,Sql,Teradata,Dual Table,在Oracle中,我们可以使用SELECT语句将其写入生成一行 SELECT 1 AS x FROM dual Teradata的等价物是什么?通常不需要这样的表 在大多数情况下,Teradata数据库中实际上不需要表。以下是与H2、PostgreSQL、Redshift、SQL Server、SQLite、Sybase ASE、Sybase SQL Anywhere、Vertica中相同的有效SQL SELECT 1 SELECT 1 WHERE 1 = 1 例外情况 然而,当需要一个集合

在Oracle中,我们可以使用SELECT语句将其写入生成一行

SELECT 1 AS x FROM dual
Teradata的等价物是什么?

通常不需要这样的表 在大多数情况下,Teradata数据库中实际上不需要表。以下是与H2、PostgreSQL、Redshift、SQL Server、SQLite、Sybase ASE、Sybase SQL Anywhere、Vertica中相同的有效SQL

SELECT 1
SELECT 1 WHERE 1 = 1
例外情况 然而,当需要一个集合操作时,有一个例外。例如,这在Teradata中无效:

SELECT 1 UNION ALL SELECT 2
产生此错误:

并集、交集或减号的SELECT必须引用表

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

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中的一个关键字,因此需要引用该视图。

您还可以创建一个Oracle单记录双表来解决此问题。@access\u已授予:绝对是一个选项。我已经更新了我的answer@access_granted:不需要双表,替换视图双表,因为选择“X”作为虚拟更简单。