Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में LEFT JOIN से टेबल A में मौजूद लेकिन टेबल B में नहीं वाले रिकॉर्ड चुनें

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 INSELECT * FROM table_A WHERE Value NOT IN (SELECT Value FROM table_B)NULL मान होने पर अप्रत्याशित परिणाम दे सकता है
NOT EXISTSSELECT * FROM table_A a WHERE NOT EXISTS (SELECT 1 FROM table_B b WHERE a.Value = b.Value)NULL-सुरक्षित, अक्सर तेज़
LEFT JOIN (ऊपर)ऊपर दिखाया गयाक्लासिक, इंडेक्स उपयोग अच्छा

प्रदर्शन टिप

  • जॉइन कॉलम (Value) पर दोनों टेबल में इंडेक्स सुनिश्चित करें।
  • बड़े टेबल पर NOT EXISTS अक्सर बेहतर होता है क्योंकि यह सेमी-जॉइन ऑप्टिमाइज़ेशन का उपयोग कर सकता है।
  1. - MySQL में टेबल में मौजूद न होने वाले मानों को कैसे क्वेरी करें?

    MySQL में किसी टेबल में मौजूद नहीं होने वाले मानों को खोजने के लिए, UNION ALL के साथ WHERE NOT EXISTS या NOT IN का उपयोग करें। यह गैप विश्लेषण या मिसिंग सीक्वेंस खोजने के लिए उपयोगी है। उदाहरण: मिसिंग ऑटो-इन्क्रीमेंट मान खोजना ऑटो-इन्क्रीमेंट टेबल बनाएं: mysql> CREATE TABLE DemoTable1918 (

  1. - MySQL में DISTINCT कॉलम से औसत कैसे चुनें?

    MySQL में विशिष्ट (DISTINCT) मानों के आधार पर औसत निकालने के लिए, सबक्वेरी में DISTINCT का उपयोग करके डुप्लिकेट हटाएं, फिर बाहरी क्वेरी में AVG() लागू करें। उदाहरण: विशिष्ट छात्र-मान संयोजनों का औसत डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1934 ( StudentName VARCHAR(20), StudentMa

  1. - MySQL में NOT IN से मान न होने वाली पंक्तियां चुनें

    NOT IN ऑपरेटर से विशिष्ट मानों को बाहर रखें कुछ मानों को छोड़कर बाकी पंक्तियां प्राप्त करने के लिए NOT IN() का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1991 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20) ); Query OK, 0 rows affected (0.61 se