sql >> Databasteknik >  >> RDS >> Oracle

Oracle DB:Returnera den andra frågan om den första frågan är tom

Du kan använda WITH för att få detta att fungera bättre (och lättare att underhålla):

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

Som är detta bör returnera de 10 raderna från query2. Om du tar bort where 1=0 från query1 (som gör att den faktiskt returnerar rader), bör du få de 10 raderna från query1.



  1. Finns det något alternativ till IN med LIMIT?

  2. Hur man ställer in entitet (doktrin) för databasvy i Symfony 2

  3. Det går inte att släppa en MySQL-tabell

  4. Jag försöker en enkel fråga med parametern in med mysql 5.5 genom jdbc-kod