ข้อแตกต่าง ระหว่าง GROUP BY และ DISTINCT
DISTINCT ใช้ในการกรองข้อมูลที่ซ้ำกัน (ทุกฟิลด์ที่ระบุ) ให้ออกมาเพียงรายการเดียวเท่านั้น ยกตัวอย่างข้อมูล
| sex | name |
|---|---|
| f | ตัวอย่าง |
| m | เดโม |
| m | เดโม |
| m | ทดสอบ |
SELECT DISTINCT `sex` FROM `user`คำสั่งด้านบนจะ Query เอาข้อมูลที่มี sex ซ้ำกันออกมาเพียงรายการเดียว คำสั่งรูปแบบนี้มักจะใช้ในการหาว่ามี sex อะไรบ้างอยู่ในระบบ
| sex |
|---|
| f |
| m |
SELECT DISTINCT `sex`,`name` FROM `user`มีการระบุฟิลด์ `name` ด้วย คำสั่งด้านบนจะ Query เอาข้อมูลที่มีทั้ง `sex` และ `name` ซ้ำกันออกมาเพียงรายการเดียว ส่วนรายการที่ `sex` เหมือนกันแต่ `name` ไม่ซ้ำกับอันอื่นจะยังคงเอาออกมาด้วย สังเกตนะครับว่า DISTINCT มันมีผลกับทุกฟิลด์ที่ระบุ
| sex | name |
|---|---|
| f | ตัวอย่าง |
| m | เดโม |
| m | ทดสอบ |
SELECT DISTINCT `sex`,COUNT(*) FROM `user`ผลลัพท์
| sex | COUNT(*) |
|---|---|
| f | 4 |
SELECT `sex`, COUNT(*) FROM `user` GROUP BY `sex`ผลลัพท์
| sex | COUNT(*) |
|---|---|
| f | 1 |
| m | 3 |
สรุป DISTINCT เหมาะสำหรับเลือกเอาข้อมูลที่ซ้ำๆกันเพียงฟิลด์ใดฟิลด์หนึงมาใช้งาน เช่นการเลือกเพศ มาใส่ Select เป็นต้น ส่วน GROUP BY เรามักจะใช้ร่วมกับ query ที่ซับซ้อนกว่าเพื่อเลือกเอาข้อมูลที่ต้องการมาแสดงผล นอกจากนี้ GROUP BY ยังสามารถใช้ร่วมกับ HAVING เพื่อจำกัดข้อมูลที่ต้องการได้อีกด้วย