Es gibt einige einfache Möglichkeiten, nur SQL zu verwenden.
Definieren Sie Ihre erste Abfrage als temporäre Tabelle mit union all, filtern Sie die zweite Abfrage mit der Anzahl der temporären Tabellen.
with temp as (select * from t1 where 1=0)
select * from temp
union all
select * from t2 where (select count(*) from temp) =0
Diese Abfrage gibt die Datensätze der zweiten Tabelle zurück.
with temp as (select * from t1 )
select * from temp
union all
select * from t2 where (select count(*) from temp) =0
Und wenn die temporäre Abfrage ein Ergebnis hat, geben Sie nur die temporäre Abfrage zurück.
Sie können sql fiddle hier testen .