WHERE और HAVING क्लॉज दोनों फ़िल्टरिंग के लिए उपयोग होते हैं, लेकिन उनके लागू होने का चरण और क्षमताएं अलग हैं।
WHERE क्लॉज
- टेबल से रिकॉर्ड **पंक्ति-स्तर** पर फ़िल्टर करता है (ग्रुपिंग से पहले)।
GROUP BYके **बिना** उपयोग किया जा सकता है।- पंक्ति ऑपरेशन के साथ काम करता है।
- **एग्रीगेट फंक्शन नहीं** रख सकता।
SELECT,UPDATE,DELETEके साथ उपयोग योग्य।GROUP BYसे **पहले** आता है (यदि उपयोग हो)।- सिंगल-रो फंक्शन के साथ उपयोग (उदा.
UPPER,LOWER)।
HAVING क्लॉज
- ग्रुप बनने के **बाद** ग्रुप-स्तर पर फ़िल्टर करता है।
GROUP BYके **बिना उपयोग नहीं** किया जा सकता।- कॉलम ऑपरेशन (एग्रीगेट) के साथ काम करता है।
- **एग्रीगेट फंक्शन रख सकता है** (उदा.
SUM,COUNT,AVG)। - केवल
SELECTके साथ उपयोग योग्य। GROUP BYके **बाद** आता है।- मल्टीपल-रो फंक्शन के साथ उपयोग।
संयुक्त सिंटैक्स
SELECT column1, column2 FROM table1, table2 WHERE [conditions] GROUP BY column1, column2 HAVING [conditions] ORDER BY column1, column2