MySQL में GROUP BY HAVING के साथ विशिष्ट मानों वाले रिकॉर्ड फ़िल्टर करना
GROUP BY ... HAVING क्लॉज का उपयोग समूहों को फ़िल्टर करने के लिए किया जाता है। यह उन मानों को खोजने के लिए उपयोगी है जो विशिष्ट संख्या में बार आते हैं।
व्यावहारिक उदाहरण
तालिका बनाना
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value INT
);
रिकॉर्ड डालना (डुप्लिकेट मानों के साथ)
mysql> INSERT INTO DemoTable(Value) VALUES(600); mysql> INSERT INTO DemoTable(Value) VALUES(600); mysql> INSERT INTO DemoTable(Value) VALUES(800); mysql> INSERT INTO DemoTable(Value) VALUES(800);
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+----+-------+ | Id | Value | +----+-------+ | 1 | 600 | | 2 | 600 | | 3 | 800 | | 4 | 800 | +----+-------+
दो सटीक मानों (Id 1 और 2) वाले रिकॉर्ड के लिए क्वेरी
mysql> SELECT Value FROM DemoTable tbl WHERE Id IN(1,2) GROUP BY Value HAVING COUNT(DISTINCT Id) = 2;
आउटपुट:
+-------+ | Value | +-------+ | 600 | +-------+
व्याख्या
WHERE Id IN(1,2)- केवल Id 1 और 2 वाली पंक्तियों पर विचार करेंGROUP BY Value- Value के अनुसार समूह बनाएंHAVING COUNT(DISTINCT Id) = 2- केवल वे समूह जिनमें दोनों Id मौजूद हैं
यह तकनीक "सटीक मिलान" खोजने के लिए उपयोगी है जहां एक मान विशिष्ट पहचानकर्ताओं के सेट के साथ जुड़ा होना चाहिए।