U kunt WITH gebruiken om dit beter te laten presteren (en gemakkelijker te onderhouden):
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
);
Zoals het is, zou dit de 10 rijen van query2 moeten retourneren. Als u de where 1=0 uit query1 verwijdert (waardoor het daadwerkelijk rijen retourneert), zou u de 10 rijen uit query1 moeten halen.