LEFT JOIN ... WHERE IS NULL पैटर्न से "A में है B में नहीं" खोजना
टेबल A की वे पंक्तियां ढूंढने के लिए जिनका मिलान टेबल B में नहीं है, LEFT JOIN के बाद WHERE b.key IS NULL फ़िल्टर लगाएं।
सिंटैक्स
SELECT a.* FROM table_A a LEFT JOIN table_B b ON a.key = b.key WHERE b.key IS NULL;
उदाहरण
CREATE TABLE table_A (Value INT); INSERT INTO table_A VALUES (10), (15), (35), (45); CREATE TABLE table_B (Value INT); INSERT INTO table_B VALUES (10), (20), (35), (60);
क्वेरी
SELECT a.* FROM table_A a LEFT JOIN table_B b ON a.Value = b.Value WHERE b.Value IS NULL;
आउटपुट
+-------+ | Value | +-------+ | 15 | | 45 | +-------+
वैकल्पिक विधियां
| विधि | क्वेरी | नोट |
|---|---|---|
| NOT IN | SELECT * FROM table_A WHERE Value NOT IN (SELECT Value FROM table_B) | NULL मान होने पर अप्रत्याशित परिणाम दे सकता है |
| NOT EXISTS | SELECT * FROM table_A a WHERE NOT EXISTS (SELECT 1 FROM table_B b WHERE a.Value = b.Value) | NULL-सुरक्षित, अक्सर तेज़ |
| LEFT JOIN (ऊपर) | ऊपर दिखाया गया | क्लासिक, इंडेक्स उपयोग अच्छा |
प्रदर्शन टिप
- जॉइन कॉलम (
Value) पर दोनों टेबल में इंडेक्स सुनिश्चित करें। - बड़े टेबल पर
NOT EXISTSअक्सर बेहतर होता है क्योंकि यह सेमी-जॉइन ऑप्टिमाइज़ेशन का उपयोग कर सकता है।