Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kueri dalam pada satu tabel dengan kondisi IN dan NOT IN

Untuk mendapatkan hanya 13 dan 15, lakukan hal berikut:

select user_id
from my_table
group by user_id
having max(case when role_id = 13 then 1 else 0 end) = 1 and  -- has 13
       max(case when role_id = 15 then 1 else 0 end) = 1 and  -- has 15
       max(case when role_id not in (13, 15) then 1 else 0 end) = 0 -- nothing else

Ini memeriksa apakah 13 dan 15 ada di set user_id. Kemudian memeriksa bahwa tidak ada yang lain di set.

Saya menyadari bahwa menggunakan klausa memiliki dengan pernyataan kasus tampak canggung pada awalnya. Namun, Anda dapat mengekspresikan banyak logika tentang berbagai kombinasi hal di set.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara memasukkan nilai identitas di Oracle menggunakan Entity Framework menggunakan urutan

  2. RANK, DENSE_RANK dan ROW_NUMBER berfungsi di Oracle

  3. PL/SQL menyimpan prosedur keluar kursor ke VBA ADODB.RecordSet?

  4. Oracle Database Regex Untuk Grup Karakter yang Berulang

  5. Oracle Style Bergabung di SQL Server