ข้อแตกต่าง ระหว่าง 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 เพื่อจำกัดข้อมูลที่ต้องการได้อีกด้วย