A-AA+then

GROUP BY และ DISTINCT ใช้เพื่อเลือกข้อมูลที่เหมือนๆกัน ออกมาแสดงได้เหมือนกัน แต่ทั้ง 2 แบบมีจุดประสงค์ต่างกัน คือ

DISTINCT ปกติเราจะใช้เพื่อเลือกเฉพาะข้อมูลที่ซ้ำกันที่ต้องการเท่านั้น ไม่สามารถแสดงข้อมูลอื่นๆได้ เช่น

SELECT DISTINCT `sex` FROM `user`
query นี้จะให้ผลลัพท์ เป็นเพศของ user เช่น F หรือ M เท่านั้น แต่ไม่สามารถคืนค่าฟิลด์อื่นๆได้

SELECT DISTINCT `sex`,`answer` FROM `user`
query นี้อาจคืนค่า sex ได้มากกว่า 1 รายการ เนื่องจากในรายการอื่นๆ answer อาจไม่ซ้ำกันก็ได้

ส่วน GROUP BY เราจะใช้เพื่อการจัดกลุ่มข้อมูลที่เหมือนๆกันตามลำดับที่กำหนดโดยชื่ฟิลด์หลัง GROUP BY และมันยังสามารถคืนค่า field อื่นๆที่เกี่ยวข้องได้ด้วย เช่น

SELECT * FROM `user` GROUP BY `sex`
query นี้ ให้ผลลัพท์เหมือนกับ DISTINCT ต่างกันที่สามารถคืนค่าของข้อมูลฟิลด์อื่นๆออกมาได้ด้วย (SELECT *)

SELECT * FROM `user` GROUP BY `sex`,`answer`
query นี้จะคืนค่าของข้อมูลทุกๆฟิลด์ ที่มีเพศต่างกัน และ คำตอบต่างกัน โดย sql จะจัดการเลือกจัดกลุ่มเอาข้อมูลที่มีเพศเดียวกัน เอาไว้ก่อน แล้วจึงเลือกเอาเฉพาะข้อมูลที่มีคำตอบเหมือนๆกันมาแสดงอีกที

สรุป DISTINCT เหมาะสำหรับเลือกเอาข้อมูลที่ซ้ำๆกันเพียงฟิลด์ใดฟิลด์หนึงมาใช้งาน เช่นการเลือกเพศ มาใส่ Select เป็นต้น ส่วน GROUP BY เรามักจะใช้ร่วมกับ query ที่ซับซ้อนกว่าเพื่อเลือกเอาข้อมูลที่ต้องการมาแสดงผล นอกจากนี้ GROUP BY ยังสามารถใช้ร่วมกับ HAVING เพื่อจำกัดข้อมูลที่ต้องการได้อีกด้วย

SQL

Relate

^