วันพุธที่ 23 มีนาคม พ.ศ. 2559

ข้อแตกต่าง ระหว่าง GROUP BY และ DISTINCT

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

ไม่มีความคิดเห็น:

แสดงความคิดเห็น