किसी कॉलम (जैसे Subject) में एकाधिक विशिष्ट मान (MySQL, MongoDB) **दोनों** रखने वाले समूह (FirstName) खोजने के लिए IN फ़िल्टर + GROUP BY + HAVING COUNT(*) = N का उपयोग करें।
टेबल बनाएं
mysql> CREATE TABLE DemoTable1885 (FirstName VARCHAR(20), Subject VARCHAR(50));
डेटा डालें
mysql> INSERT INTO DemoTable1885 VALUES('John', 'MySQL'), ('John', 'MongoDB'), ('Carol', 'MySQL'), ('David', 'Java');
MySQL और MongoDB दोनों वाले नाम
mysql> SELECT FirstName FROM DemoTable1885
WHERE Subject IN ('MySQL', 'MongoDB')
GROUP BY FirstName
HAVING COUNT(*) = 2;
आउटपुट:
+-----------+ | FirstName | +-----------+ | John | +-----------+
व्याख्या
WHERE Subject IN ('MySQL', 'MongoDB')→ केवल ये दो विषय वाली पंक्तियाँ रखें।GROUP BY FirstName→ नाम अनुसार समूह।HAVING COUNT(*) = 2→ दोनों विषय मौजूद होने पर ही (गणना 2)।
सामान्यीकृत: N मान
SELECT FirstName FROM DemoTable1885
WHERE Subject IN ('MySQL', 'MongoDB', 'PostgreSQL')
GROUP BY FirstName
HAVING COUNT(DISTINCT Subject) = 3;
विकल्प: सशर्त एग्रीगेशन
SELECT FirstName FROM DemoTable1885 GROUP BY FirstName HAVING SUM(Subject = 'MySQL') > 0 AND SUM(Subject = 'MongoDB') > 0;
नोट
COUNT(*)डुप्लिकेट पंक्तियाँ गिनता है;COUNT(DISTINCT Subject)अद्वितीय विषय गिनता है।INसूची औरHAVING COUNTसंख्या मेल खानी चाहिए।