Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

IN और NOT IN शर्तों के साथ एक ही टेबल पर आंतरिक प्रश्न

सिर्फ़ पाने के लिए 13 और 15, निम्न कार्य करें:

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

यह जाँचता है कि 13 और 15 user_id सेट में हैं। इसके बाद यह जांचता है कि सेट में और कुछ नहीं है।

मुझे एहसास है कि केस स्टेटमेंट के साथ होने वाले क्लॉज का उपयोग करना पहली बार में अजीब लगता है। हालांकि, आप सेट में चीजों के विभिन्न संयोजनों के बारे में बहुत सारे तर्क व्यक्त कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:दो तारीखों के बीच के दिन और कार्यदिवसों को छोड़ दें कि ऋणात्मक संख्याओं को कैसे संभालें

  2. Oracle तालिका में पंक्तियों को कॉलम में कैसे बदलें

  3. क्या डेटाबेस से django मॉडल उत्पन्न करना संभव है?

  4. मैं रूबी में ओरेकल संग्रहीत प्रक्रिया कैसे चला सकता हूं?

  5. sqlplus से संग्रहित प्रक्रिया को कॉल करें