NOT IN के साथ कंडीशनल GROUP BY का उपयोग
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Name VARCHAR(40),
Score INT
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES ('Adam', 89);
mysql> INSERT INTO DemoTable VALUES ('Adam', 89);
mysql> INSERT INTO DemoTable VALUES ('Chris', 89);
mysql> INSERT INTO DemoTable VALUES ('Chris', 89);
mysql> INSERT INTO DemoTable VALUES ('Bob', 98);
mysql> INSERT INTO DemoTable VALUES ('Bob', 89);
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------+-------+ | Name | Score | +-------+-------+ | Adam | 89 | | Adam | 89 | | Chris | 89 | | Chris | 89 | | Bob | 98 | | Bob | 89 | +-------+-------+
NOT IN() का उपयोग करके कंडीशनल GROUP BY प्राप्त करने के लिए क्वेरी:
mysql> SELECT DISTINCT Name
FROM DemoTable
WHERE Name NOT IN (
SELECT Name FROM DemoTable WHERE Score <> 89
);
आउटपुट:
+-------+ | Name | +-------+ | Adam | | Chris | +-------+
व्याख्या: सबक्वेरी उन सभी नामों को चुनती है जिनका स्कोर 89 से अलग है (यहां केवल 'Bob' का स्कोर 98 है)। मुख्य क्वेरी फिर उन नामों को बाहर करती है और केवल उन्हीं नामों को चुनती है जिनके सभी रिकॉर्ड्स का स्कोर 89 है। इस तरह 'Adam' और 'Chris' चुने जाते हैं क्योंकि उनके सभी रिकॉर्ड्स में स्कोर 89 है, जबकि 'Bob' का एक रिकॉर्ड 98 का है इसलिए वह बाहर हो जाता है।