MySQL में LEFT OUTER JOIN से गायब ID ढूंढना
एक टेबल में मौजूद लेकिन दूसरी टेबल में गायब ID ढूंढने के लिए LEFT OUTER JOIN के साथ WHERE ... IS NULL का उपयोग करें।
उदाहरण
पहली टेबल (First_Table):
mysql> create table First_Table (Id int); mysql> insert into First_Table values(1), (2), (3), (4);
दूसरी टेबल (Second_Table):
mysql> create table Second_Table (Id int); mysql> insert into Second_Table values(2), (4);
गायब ID ढूंढें (First_Table में हैं लेकिन Second_Table में नहीं):
mysql> SELECT First_Table.Id FROM First_Table
-> LEFT OUTER JOIN Second_Table ON First_Table.Id = Second_Table.Id
-> WHERE Second_Table.Id IS NULL;
परिणाम:
+------+ | Id | +------+ | 1 | | 3 | +------+
कैसे काम करता है
LEFT JOIN: First_Table की सभी पंक्तियाँ रखता है, मेल न होने पर Second_Table कॉलम NULL होते हैंWHERE Second_Table.Id IS NULL: केवल वे पंक्तियाँ जहाँ मेल नहीं मिला
वैकल्पिक विधियाँ
-- NOT IN (NULL मान होने पर सावधानी) SELECT Id FROM First_Table WHERE Id NOT IN (SELECT Id FROM Second_Table); -- NOT EXISTS (अक्सर बेहतर प्रदर्शन) SELECT Id FROM First_Table f WHERE NOT EXISTS (SELECT 1 FROM Second_Table s WHERE s.Id = f.Id); -- EXCEPT (MySQL 8.0+ नहीं, लेकिन MariaDB में) SELECT Id FROM First_Table EXCEPT SELECT Id FROM Second_Table;
सिमेट्रिक डिफरेंस (दोनों तरफ गायब)
SELECT Id FROM First_Table WHERE Id NOT IN (SELECT Id FROM Second_Table) UNION SELECT Id FROM Second_Table WHERE Id NOT IN (SELECT Id FROM First_Table);