WHERE, GROUP BY और HAVING का संयुक्त उपयोग
WHERE फिल्टर करता है, GROUP BY ग्रुप करता है, HAVING ग्रुप्स को फिल्टर करता है:
SELECT * FROM table_name WHERE condition GROUP BY column_name HAVING COUNT(*) > 1 ORDER BY column_name DESC;
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE GroupByWithWhereClause (
-> Id INT NOT NULL AUTO_INCREMENT,
-> IsDeleted TINYINT(1),
-> MoneyStatus VARCHAR(20),
-> UserId INT,
-> PRIMARY KEY(Id)
-> );
19 रिकॉर्ड्स डाले गए (विभिन्न UserId, IsDeleted, MoneyStatus के साथ)।
क्वेरी: IsDeleted=0, MoneyStatus='done' वाले UserId जिनके 1 से अधिक रिकॉर्ड्स हैं
mysql> SELECT * FROM GroupByWithWhereClause
-> WHERE IsDeleted = 0 AND MoneyStatus = 'done'
-> GROUP BY SUBSTR(UserId, 1, 3)
-> HAVING COUNT(*) > 1
-> ORDER BY Id DESC;
आउटपुट:
+----+-----------+-------------+--------+ | Id | IsDeleted | MoneyStatus | UserId | +----+-----------+-------------+--------+ | 18 | 0 | done | 106 | | 8 | 0 | done | 103 | | 2 | 0 | done | 101 | +----+-----------+-------------+--------+
निष्पादन क्रम: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT