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

SQL pro kontrolu všech hodnot ve sloupci

Nejjednodušší možností je obecně něco takového

SQL> ed
Wrote file afiedt.buf

  1  with x as (
  2    select 1 id, 1 val from dual union all
  3    select 1 id, 2 val from dual union all
  4    select 1 id, 3 val from dual union all
  5    select 2 id, 1 val from dual union all
  6    select 2 id, 2 val from dual union all
  7    select 3 id, 1 val from dual union all
  8    select 3 id, 2 val from dual union all
  9    select 3 id, 3 val from dual union all
 10    select 4 id, 1 val from dual
 11  )
 12  select id
 13    from x
 14   where val in (1,2,3)
 15   group by id
 16* having count(distinct val) = 3
SQL> /

        ID
----------
         1
         3

WHERE klauzule identifikuje hodnoty, které vás zajímají. HAVING klauzule říká, kolik z těchto hodnot musí existovat. Pokud byste chtěli například všechny řádky, které měly alespoň 2 ze 3 hodnot, změnili byste HAVING klauzule k vyhledání COUNT z 2.

Pokud je konkrétní val je zaručeno, že se objeví maximálně jednou za id , můžete odstranit distinct v HAVING doložka.



  1. Čtení podřízeného, ​​čtení-zápis hlavního nastavení

  2. Chyba národního prostředí Postgres

  3. Fulltextové vyhledávání v podřetězci v PostgreSQL

  4. Jak mohu vložit data do databáze MySQL?