sql >> Base de Datos >  >> RDS >> Oracle

Oracle DB:devuelva la segunda consulta si la primera consulta está vacía

Puede utilizar CON para que funcione mejor (y sea más fácil de mantener):

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
);

Tal como está, esto debería devolver las 10 filas de query2. Si elimina el lugar donde 1=0 de la consulta 1 (lo que hace que en realidad devuelva filas), debería obtener las 10 filas de la consulta 1.