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

SQL pour vérifier toutes les valeurs dans la colonne

L'option la plus simple est généralement quelque chose comme ça

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

Le WHERE La clause identifie les valeurs qui vous intéressent. La clause HAVING La clause vous indique combien de ces valeurs doivent exister. Si vous vouliez toutes les lignes qui avaient au moins 2 des 3 valeurs, par exemple, vous changeriez le HAVING clause pour rechercher un COUNT de 2.

Si un val particulier est garanti de se produire au plus une fois par id , vous pouvez éliminer le distinct dans le HAVING clause.