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

विभिन्न पंक्तियों के लिए जटिल एसक्यूएल बयान

ऐसा लगता है कि आप एक एंटी-जॉइन चाहते हैं , यानी आपको सबसे पहले यह स्थापित करने की आवश्यकता है कि किन उपयोगकर्ता आईडी में IsFinal = 1 है , फिर उस परिणाम सेट का उपयोग सभी उपयोगकर्ता आईडी वापस करने के लिए करें नहीं उस सूची में।

एंटी-जॉइन को लागू करने के कई तरीके हैं।

  1. NOT IN :

    SELECT *
    FROM atable
    WHERE UserID NOT IN (
      SELECT UserID
      FROM atable
      WHERE IsFinal = 1
    );
    
  2. NOT EXISTS :

    SELECT *
    FROM atable t1
    WHERE NOT EXISTS (
      SELECT *
      FROM atable t2
      WHERE t1.UserID = t2.UserID
        AND t2.IsFinal = 1
    );
    
  3. LEFT JOIN + WHERE IS NULL :

    क)

    SELECT *
    FROM atable t1
      LEFT JOIN (
        SELECT *
        FROM atable
        WHERE IsFinal = 1
      ) t2 ON t1.UserID = t2.UserID
    WHERE t2.UserID IS NULL;
    

    बी)

    SELECT *
    FROM atable t1
      LEFT JOIN atable t2
        ON t1.UserID = t2.UserID AND t2.IsFinal = 1
    WHERE t2.UserID IS NULL;
    

ऐसा हो सकता है कि वे आपके डेटाबेस में समान रूप से कुशल हों, लेकिन फिर भी उनमें से प्रत्येक का परीक्षण करना एक अच्छा विचार हो सकता है ताकि कम से कम एक के साथ समाप्त होने से बचा जा सके जो दूसरों की तुलना में खराब प्रदर्शन करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. django.db.utils.operationalError:(2059, प्रमाणीकरण प्लगइन 'caching_sha2_password')

  2. समूहीकृत डेटा पंक्तियों के साथ जुड़ने का उपयोग करना

  3. MySQL अपडेट क्वेरी - क्या रेस कंडीशन और रो लॉकिंग पर 'कहां' कंडीशन का सम्मान किया जाएगा? (php, PDO, MySQL, InnoDB)

  4. PHP स्ट्रिप_टैग के समतुल्य MySQL क्वेरी क्या है?

  5. संदर्भ में jdbc के लिए उपयोग किए जाने वाले SSL निर्दिष्ट करें।xml