DUAL
是 Oracle 提供的一个虚拟表,用于评估实际上不需要引用数据库对象的表达式,例如:
SELECT 1 FROM DUAL
PostgreSQL 不提供等效于 DUAL
表的功能,因为它能够在不引用数据库对象的情况下评估表达式,例如:
SELECT 1
兼容性
orafce
实现了一个 DUAL
表来帮助从 Oracle 迁移,创建方式如下:
CREATE VIEW public.dual AS SELECT 'X'::varchar AS dummy;
(来源)
PostgreSQL 中的隐式实现
2018 年,Tom Lane 建议了一个潜在的用例,其中规划器可以从在规划器/重写器中插入一个虚拟表中获益,这将简化各种代码路径:"SELECT ... FROM DUAL" 看起来并不像它表现的那样愚蠢。这随后在 PostgreSQL 12 中作为提交 4be058fe 实现。
有用链接
- DUAL 表 - 维基百科文章