在Oracle中不参考双重表就从中选择吗?

时间:2019-02-14 15:40:48

标签: sql oracle postgresql

在引用双重表时(例如,

),在Oracle SQL中从无选择中进行选择
SELECT sysdate FROM dual;

现在,我想拥有一个对PostgreSQL也适用的查询,但是不可能从双查询中进行选择。我知道我可以删除整个FROM部分,但是在Oracle中将无法使用。

我也尝试过类似SELECT CURRENT_TIMESTAMP FROM VALUES(1)) V(C);之类的事情,但是Oracle也无法做到这一点。

那么有没有办法在不使用Oracle SQL中的dual表的情况下从任何地方进行选择?

4 个答案:

答案 0 :(得分:2)

或者,在Postgres中创建一个名为[Test] //note this is also async now public async Task WriteToDBShouldWrite() { var mockObject = new Mock<INameRepo>(); mockObject.Setup(x => x.GetName()).ReturnsAsync("Frank"); string result = mockObject.Object.WriteNameToDataBase(); Employee emp = new Employee(mockObject.Object); await emp.WriteToDBShouldWrite(); //ensure GetName is called once and once only mockObject.Verify(v => v.GetName(), TimesOnce); } 的表,该表由1行1列组成

dual

您可以像在Oracle中那样在Postgres中使用它

create table dual as (select 1);

答案 1 :(得分:0)

Oracle中的

.extend是一个内置函数,即不是数据库表列。您可以使用任何表,只要查询恰好返回一行,例如

sysdate

答案 2 :(得分:0)

如果您的小表TABLE_B至少有一行,则可以尝试从中选择一行。

select sysdate from TABLE_B where rownum < 2;

该表的内容无关紧要,因为您将不会选择该表的任何列。

答案 3 :(得分:0)

以下代码使用XMLTABLE函数在Oracle和Postgres(10+)中生成伪造的行。这段代码很奇怪,但是不需要任何自定义对象。

--Generate a fake row in either Oracle or Postgres.
select *
from xmltable
(
    --The expression syntax is different for Oracle and Postgres.
    --Oracle can use a literal, Postgres must reference the XML.
    --The string '' is null in Oracle but not null in Postgres.
    case when '' is null then '1' else '/a' end passing '<a>1</a>'
    columns test int path '.'
);

test
----
   1
相关问题