Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

นับจำนวนค่าซ้ำในคอลัมน์ตาราง MySQL ด้วย GROUP BY และ HAVING

การนับค่าที่ซ้ำกันในคอลัมน์ด้วย 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);
mysql> INSERT INTO DemoTable VALUES(40);
mysql> INSERT INTO DemoTable VALUES(50);
mysql> INSERT INTO DemoTable VALUES(60);
mysql> INSERT INTO DemoTable VALUES(40);
mysql> INSERT INTO DemoTable VALUES(80);

แสดงข้อมูลทั้งหมด

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)

คำอธิบาย

  • GROUP BY Data : จัดกลุ่มตามค่าในคอลัมน์ Data
  • HAVING COUNT(Data) > 1 : กรองเฉพาะกลุ่มที่มีจำนวนแถวมากกว่า 1 (คือค่าซ้ำ)
  • ผลลัพธ์แสดงจำนวนครั้งของแต่ละค่าที่ซ้ำ (60 ซ้ำ 2 ครั้ง, 40 ซ้ำ 2 ครั้ง)
  • หากต้องการดูค่าที่ซ้ำพร้อมจำนวน ให้ใช้ SELECT Data, COUNT(*) ...