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