在Oracle SQL中,在引用双表时,会从nothing中进行选择,如
SELECT sysdate FROM dual;
现在我想有一个查询,也适用于PostgreSQL,但选择从双有是不可能的。我知道,我可以放弃整个FROM
部分,但它不会在Oracle中工作。
我也试过像SELECT CURRENT_TIMESTAMP FROM VALUES(1)) V(C);
这样的东西,但Oracle也做不到这一点。
那么,有没有一种方法可以在不使用Oracle SQL中的dual
表的情况下从任何地方进行选择?
4条答案
按热度按时间izkcnapc1#
或者,在Postgres中创建一个名为
dual
的表,由1行和1列组成你可以像在Oracle中一样在Postgres中使用它
yduiuuwa2#
Oracle中的
sysdate
是一个内置函数,即不是数据库表的列。只要查询只返回一行,就可以使用任何表,例如:zd287kbt3#
如果您有一个小表TABLE_B,其中至少有一行,则可以尝试从其中选择一行。
表的内容无关紧要,因为您不会选择其中的任何列。
eqfvzcg84#
在Oracle 21c及以下版本中,下面的代码使用
XMLTABLE
函数在Oracle和Postgres(10+)中生成一个假行。这段代码非常奇怪,但它不需要任何自定义对象。在Oracle 23c及更高版本中,Oracle终于支持不带
FROM
子句的选择: