Có một số cách đơn giản chỉ sử dụng sql.
Xác định truy vấn đầu tiên của bạn dưới dạng bảng tạm thời, với kết hợp tất cả, lọc truy vấn thứ hai với số lượng của bảng tạm thời.
with temp as (select * from t1 where 1=0)
select * from temp
union all
select * from t2 where (select count(*) from temp) =0
Truy vấn này sẽ trả về các bản ghi của bảng thứ hai.
with temp as (select * from t1 )
select * from temp
union all
select * from t2 where (select count(*) from temp) =0
Và nếu truy vấn tạm thời có kết quả, chỉ trả về truy vấn tạm thời.
Bạn có thể kiểm tra bằng sql fiddle tại đây .