GROUP BY HAVING के साथ डुप्लिकेट गिनना
किसी कॉलम में कौन से मान डुप्लिकेट हैं और उनकी कितनी बार पुनरावृत्ति हुई है, यह जानने के लिए GROUP BY के साथ HAVING COUNT(*) > 1 का उपयोग करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable(
Data INT
);
Query OK, 0 rows affected (0.98 sec)
mysql> INSERT INTO DemoTable VALUES(60); Query OK, 1 row affected (0.27 sec) mysql> INSERT INTO DemoTable VALUES(40); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO DemoTable VALUES(50); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO DemoTable VALUES(60); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO DemoTable VALUES(40); Query OK, 1 row affected (0.11 sec) mysql> INSERT INTO DemoTable VALUES(80); Query OK, 1 row affected (0.15 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+------+ | Data | +------+ | 60 | | 40 | | 50 | | 60 | | 40 | | 80 | +------+ 6 rows in set (0.00 sec)
डुप्लिकेट मान और उनकी संख्या गिनने की क्वेरी
mysql> SELECT COUNT(*) FROM DemoTable GROUP BY Data HAVING COUNT(Data) > 1;
परिणाम:
+----------+ | count(*) | +----------+ | 2 | | 2 | +----------+ 2 rows in set (0.03 sec)
व्याख्या: 60 और 40 प्रत्येक दो बार आए हैं। GROUP BY Data समान मानों को समूहित करता है, HAVING COUNT(Data) > 1 केवल उन समूहों को रखता है जिनकी गिनती 1 से अधिक है।
बेहतर क्वेरी (मान भी देखने के लिए): SELECT Data, COUNT(*) AS cnt FROM DemoTable GROUP BY Data HAVING cnt > 1;