sql >> Databáze >  >> RDS >> Oracle

SQL dotaz pro vrácení dat pouze v případě, že jsou přítomny VŠECHNY potřebné sloupce a nikoli NULL

Můžete použít exists . Myslím, že máte v úmyslu:

select t.*
from t
where exists (select 1
              from t t2
              where t2.id = t.id and t2.type = 'Purchase' and t2.total is not null
             ) and
      exists (select 1
              from t t2
              where t2.id = t.id and t2.type = 'Exchange' and t2.total is not null
             ) and
      exists (select 1
              from t t2
              where t2.id = t.id and t2.type = 'Return' and t2.total is not null
             );

Existují způsoby, jak to "zjednodušit":

select t.*
from t
where 3 = (select count(distinct t2.type)
           from t t2
           where t2.id = t.id and
                 t2.type in ('Purchase', 'Exchange', 'Return') and
                 t2.total is not null
          );


  1. vypočítat součet všech čísel ve sloupci

  2. Předejte ID do dotazu pre_get_posts ve funkci

  3. MySQL:Kdy jsou skutečně potřebná oprávnění Flush v MySQL?

  4. Podrobný pohled na indexování databáze