MySQL IN सबक्वेरी: दो टेबल में सामान्य ID खोजना
WHERE column IN (SELECT ...) पैटर्न का उपयोग करके एक टेबल के ID के आधार पर दूसरी टेबल से मिलते-जुलते रिकॉर्ड प्राप्त कर सकते हैं।
उदाहरण: DemoTable1 के ID जो DemoTable2 में भी हैं
पहली टेबल (केवल ID):
CREATE TABLE DemoTable1 (Id INT); INSERT INTO DemoTable1 VALUES (100), (110), (4), (3);
दूसरी टेबल (ID + Name):
CREATE TABLE DemoTable2 (Id INT, Name VARCHAR(50)); INSERT INTO DemoTable2 VALUES (4, 'Chris'), (1, 'David'), (110, 'Adam'), (210, 'Bob');
सामान्य ID वाले रिकॉर्ड प्राप्त करें
SELECT Id, Name FROM DemoTable2 WHERE Id IN (SELECT Id FROM DemoTable1);
परिणाम:
+------+-------+ | Id | Name | +------+-------+ | 110 | Adam | | 4 | Chris | +------+-------+
वैकल्पिक: INNER JOIN (अक्सर तेज)
SELECT d2.Id, d2.Name FROM DemoTable2 d2 INNER JOIN DemoTable1 d1 ON d2.Id = d1.Id;
IN vs JOIN
| पहलू | IN (सबक्वेरी) | INNER JOIN |
|---|---|---|
| पठनीयता | सरल, घोषणात्मक | थोड़ा जटिल |
| प्रदर्शन | MySQL 8.0+ में समान | आमतौर पर बेहतर/समान |
| डुप्लिकेट | स्वचालित रूप से अलग | डुप्लिकेट रखता है (DISTINCT जोड़ें) |
| NULL मान | NOT IN में समस्या | सुरक्षित |
NOT IN के साथ सावधानी