हम परिणामों को फ़िल्टर करने के लिए WHERE क्लॉज नामक एक सशर्त क्लॉज का उपयोग कर सकते हैं। इस WHERE क्लॉज का उपयोग करके, हम एक टेबल से आवश्यक रिकॉर्ड्स चुनने के लिए चयन मानदंड निर्दिष्ट कर सकते हैं। HAVING क्लॉज रो के समूह या एग्रीगेट्स के लिए फ़िल्टर कंडीशन निर्दिष्ट करता है।
WHERE क्लॉज का उपयोग एग्रीगेट फंक्शन के साथ नहीं किया जा सकता जबकि HAVING का उपयोग एग्रीगेट फंक्शन के साथ किया जा सकता है। निम्न एक उदाहरण है −
आइए अब एक टेबल बनाते हैं।
mysql> create table WhereDemo -> ( -> Price int -> ); Query OK, 0 rows affected (0.64 sec)
टेबल में रिकॉर्ड्स इन्सर्ट करना।
mysql> insert into WhereDemo values(100); Query OK, 1 row affected (0.13 sec) mysql> insert into WhereDemo values(200); Query OK, 1 row affected (0.21 sec) mysql> insert into WhereDemo values(300); Query OK, 1 row affected (0.15 sec) mysql> insert into WhereDemo values(400); Query OK, 1 row affected (0.12 sec)
सभी रिकॉर्ड्स डिस्प्ले करने के लिए।
mysql> select * from WhereDemo;
आउटपुट निम्न है।
+-------+ | Price | +-------+ | 100 | | 200 | | 300 | | 400 | +-------+ 4 rows in set (0.00 sec)
HAVING क्लॉज का उपयोग एग्रीगेट फंक्शन के साथ किया जा सकता है।
mysql> select SUM(Price) FROM WhereDemo HAVING SUM(Price) > 500;
आउटपुट निम्न है।
+------------+ | SUM(Price) | +------------+ | 1000 | +------------+ 1 row in set (0.00 sec)
यहाँ, यदि हम एग्रीगेट फंक्शन के साथ WHERE का उपयोग करने का प्रयास करेंगे, तो एरर उत्पन्न होगी।
mysql> select SUM(Price) FROM WhereDemo WHERE SUM(Price) > 200; ERROR 1111 (HY000): Invalid use of group function