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

क्यों INNER JOIN बराबर नहीं (!=) हमेशा के लिए लटका?

मान लें कि आपका पहला INNER JOIN . है table1 . में 1,000,000 पंक्तियों में से 75% लौटाता है . दूसरी क्वेरी आपके विचार से 250,000 अन्य पंक्तियों को वापस नहीं करती है। इसके बजाय, यह कार्टेशियन उत्पाद बनाने और 750, 000 मिलान पंक्तियों को हटाने का प्रयास करता है। इस प्रकार यह 6,000,000×1,000,000-750,000 पंक्तियों को वापस करने का प्रयास कर रहा है। यह एक उभड़ा हुआ 6×10 पंक्ति परिणाम सेट है।

आप शायद यही चाहते हैं:

SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL

यह table1 . में पंक्तियां लौटाता है table2 . में मौजूद नहीं है ।

आपको FULL OUTER JOIN में भी रुचि हो सकती है :

SELECT * FROM table1
FULL OUTER JOIN table2 ON table2.number = table1.number
WHERE table1.number IS NULL AND table2.number 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. एक MySQL डीबी में/से छवि डालें/देखें

  2. बहु-स्तरीय टिप्पणी उत्तर:प्रदर्शन और संग्रहण

  3. क्या यह एक सच्चा लंबा मतदान है?

  4. MySQL से SQL सर्वर माइग्रेशन

  5. किसी सदस्य फ़ंक्शन को कॉल करें () बूलियन पर निष्पादित करें