Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle DB:Retorna a segunda consulta se a primeira consulta estiver vazia


Você pode utilizar WITH para melhorar o desempenho (e mais fácil de manter):
WITH query1 as (
    select 1, 2
    from dual
    where 1=0
    connect by level <= 10
),
query2 as (
    select 3, 4
    from dual
    connect by level <= 10
)
select *
from query1
union all
select *
from query2
where not exists (
    select null
    from query1
);

Como está, isso deve retornar as 10 linhas da query2. Se você remover o where 1=0 da query1 (fazendo com que ele retorne linhas), você deverá obter as 10 linhas da query1.