Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle DB :renvoie la deuxième requête si la première requête est vide

Vous pouvez utiliser WITH pour améliorer les performances (et faciliter la maintenance) :

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

Tel quel, cela devrait renvoyer les 10 lignes de query2. Si vous supprimez le where 1=0 de query1 (ce qui le fait renvoyer des lignes), vous devriez obtenir les 10 lignes de query1.