Oracle
 sql >> Database >  >> RDS >> Oracle

DB Oracle:restituisce la seconda query se la prima query è vuota

Puoi utilizzare WITH per renderlo più performante (e più facile da mantenere):

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

Come è questo dovrebbe restituire le 10 righe da query2. Se rimuovi dove 1=0 da query1 (facendo in modo che restituisca effettivamente righe), dovresti ottenere le 10 righe da query1.