Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL за проверка за всички стойности в колоната

Най-простият вариант обикновено е нещо подобно

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 клаузата идентифицира стойностите, които ви интересуват. HAVING клауза ви казва колко от тези стойности трябва да съществуват. Ако искате всички редове да имат поне 2 от 3-те стойности, например, бихте променили HAVING клауза за търсене на COUNT от 2.

Ако конкретен val се гарантира, че ще се случи най-много веднъж на id , можете да премахнете distinct в HAVING клауза.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразувайте десетичната година в дата

  2. ORA-28001:Паролата е изтекла

  3. JDBC:вземете типа на масив от метаданните

  4. Хибернация на оракул, @GeneratedValue(strategy =GenerationType.AUTO)

  5. Съхранявайте големи JSON файлове в Oracle DB