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

एक तालिका से रिकॉर्ड प्राप्त करें जहां दूसरे में कोई रिकॉर्ड नहीं है

NOT IN का उपयोग करना:

SELECT s.*
  FROM SURVEYS s
 WHERE s.userid != 28
   AND s.surveyid NOT IN (SELECT r.survey_id
                            FROM RESPONSES r
                           WHERE r.userid = 28)

लेफ्ट जॉइन/IS NULL का उपयोग करना:

   SELECT s.*
     FROM SURVEYS s
LEFT JOIN RESPONSES r ON r.survey_id = s.surveyid
                     AND r.user_id = 28
    WHERE s.userid != 28
      AND r.userid IS NULL

मौजूद नहीं का उपयोग करना:

SELECT s.*
  FROM SURVEYS s
 WHERE s.userid != 28
   AND NOT EXISTS (SELECT NULL
                     FROM RESPONSES r
                    WHERE r.userid = 28
                      AND r.survey_id = s.surveyid)

सूचीबद्ध विकल्पों में से, NOT IN और LEFT JOIN/IS NULL समकक्ष हैं, हालांकि मैं पसंद करता हूं NOT IN क्योंकि यह अधिक पठनीय है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL की छिपी विशेषताएं

  2. GROUP BY का उपयोग करते समय MYSQL गलत पंक्तियाँ दिखाता है

  3. दिनांक और समय कॉलम के साथ Mysqli bind_param का उपयोग करना?

  4. MySQL - एक ही तालिका से पंक्ति के आधार पर योग स्तंभ मान(रों)

  5. MYSQL डेटाबेस में यादृच्छिक वर्ण सम्मिलित करना