GROUP BY HAVING के साथ डुप्लिकेट पंक्तियां और उनकी गणना
एकाधिक कॉलम के संयोजन के आधार पर दोहराई गई पंक्तियां खोजने और उनकी संख्या गिनने के लिए GROUP BY सभी संबंधित कॉलम पर और HAVING COUNT(*) > 1 का उपयोग करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable(
Name VARCHAR(100),
Age INT
);
Query OK, 0 rows affected (1.50 sec)
mysql> INSERT INTO DemoTable VALUES('Chris',23);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES('David',21);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Chris',23);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES('Chris',21);
Query OK, 1 row affected (0.27 sec)
mysql> INSERT INTO DemoTable VALUES('Mike',25);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES('David',21);
Query OK, 1 row affected (0.10 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+-------+------+ | Name | Age | +-------+------+ | Chris | 23 | | David | 21 | | Chris | 23 | | Chris | 21 | | Mike | 25 | | David | 21 | +-------+------+ 6 rows in set (0.00 sec)
दोहराई गई पंक्तियां और उनकी गणना
mysql> SELECT Name, Age, COUNT(*) AS Repeated
FROM DemoTable GROUP BY Name, Age HAVING Repeated > 1;
परिणाम:
+-------+------+----------+ | Name | Age | Repeated | +-------+------+----------+ | Chris | 23 | 2 | | David | 21 | 2 | +-------+------+----------+ 2 rows in set (0.00 sec)
व्याख्या: (Chris, 23) दो बार, (David, 21) दो बार आए। (Chris, 21) और (Mike, 25) एक-एक बार हैं इसलिए परिणाम में नहीं हैं। GROUP BY Name, Age दोनों कॉलम के संयोजन पर समूह बनाता है।