sql >> Databasteknik >  >> RDS >> Oracle

SQL för att kontrollera alla värden i kolumnen

Det enklaste alternativet är i allmänhet något sånt här

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 klausulen identifierar de värden du är intresserad av. HAVING klausul talar om hur många av dessa värden som behöver existera. Om du till exempel ville ha alla rader som hade minst 2 av de 3 värdena, skulle du ändra HAVING sats för att leta efter en COUNT av 2.

Om en viss val kommer garanterat att inträffa högst en gång per id , kan du eliminera distinct i HAVING klausul.



  1. MYSQl Optimera tabell över blogginlägg med kommentarer

  2. PSQL kommandoradsargument i DO-skript

  3. Hur man får gårdagens datum i MySQL

  4. Räknemedian grupperat efter dag