การเช็คข้อมูลซ้ำใน MySQL ด้วย GROUP BY และ HAVING บทความนี้สอนการเขียนคำสั่ง SQL เพื่อเช็คข้อมูลซ้ำในฐานข้อมูล MySQL/MariaDB ด้วย GROUP BY และ HAVING สามารถเขียนคำสั่งได้ดังนี้
ตัวอย่าง ข้อมูลของตาราง test ข้อมูล column name มีค่า A และ C ที่ซ้ำ
+----+------+
| id | name |
+----+------+
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | A |
| 5 | A |
| 6 | C |
+----+------+
ตัวอย่าง การเช็คข้อมูลซ้ำใน MySQL ด้วย GROUP BY และ HAVING
SELECT *, COUNT(NAME) AS duplicate_count FROM test GROUP BY name HAVING duplicate_count > 1;
ผลลัพธ์
+----+------+-----------------+
| id | name | duplicate_count |
+----+------+-----------------+
| 1 | A | 3 |
| 3 | C | 2 |
+----+------+-----------------+
2 rows in set (0.001 sec)
การเช็คข้อมูลซ้ำใน MySQL จากตัวอย่างคำสั่ง SQL สามารถแยกแต่ละส่วน โดยมีรายละเอียดดังนี้
1. SELECT *, COUNT(NAME) AS duplicate_count FROM test คือ แสดงข้อมูลทุก columns และนับข้อมูลจาก column name ตั้งชื่อว่า duplicate_count จากตาราง test
2. GROUP BY name HAVING duplicate_count > 1 คือ ให้รวมข้อมูล name ที่ซ้ำกันเข้าด้วยกัน และแสดงข้อมูลเฉพาะที่ column duplicate_count มีค่ามากกว่า 1 (ถ้าข้อมูลไม่ซ้ำจะมีค่าเท่ากับ 1)