问题描述
我有一个适用于MSSQL的查询,但是当我在Oracle DB上运行它时,它失败了:
SELECT ( CASE WHEN NOT EXISTS(SELECT NULL FROM DA_TRANSACTION) THEN 0 ELSE 1 END ) AS isEmpty
我得到的错误:
SQL查询错误:ORA-00923:在预期位置找不到FROM关键字
如何修改我的查询,使其也可以在Oracle中使用?
解决方法
Oracle需要一个FROM
子句。为此,它提供了一个单行表:
SELECT ( CASE WHEN NOT EXISTS(SELECT NULL FROM DA_TRANSACTION) THEN 0 ELSE 1 END ) AS isEmpty
FROM DUAL;
如果您想要在两个数据库中都可以使用的高效版本(并且您正在使用Oracle 12C +):
select count(*) as isEmpty
from (select 1
from da_transaction
offset 0 fetch first 1 row only
) t