เพราะหากไม่มี GROUP BY ผลลัพธ์ที่ MySQL คืนอาจทำให้เข้าใจผิด เราจะใช้ตาราง Student ด้านล่างเป็นตัวอย่าง:
mysql> SELECT * FROM Student; +------+---------+---------+-----------+ | Id | Name | Address | Subject | +------+---------+---------+-----------+ | 1 | Gaurav | Delhi | Computers | | 2 | Aarav | Mumbai | History | | 15 | Harshit | Delhi | Commerce | | 20 | Gaurav | Jaipur | Computers | +------+---------+---------+-----------+ 4 rows in set (0.00 sec) mysql> SELECT COUNT(*), Name FROM Student; +----------+--------+ | COUNT(*) | name | +----------+--------+ | 4 | Gaurav | +----------+--------+ 1 row in set (0.00 sec)
สังเกตได้ว่าฟังก์ชันกลุ่ม COUNT(*) คืนจำนวนแถวทั้งหมด (4) แต่ค่า Gaurav ในฟิลด์ Name นั้นทำให้เข้าใจผิด เพราะไม่ทราบว่า MySQL เลือกค่านี้มาจากฐานะใด (ค่าแรกของคอลัมน์ หรือค่าที่ซ้ำมากที่สุด)
หากเขียนคำสั่งพร้อม GROUP BY ผลลัพธ์จะมีความหมายชัดเจนกว่า:
mysql> SELECT COUNT(*), name FROM student GROUP BY id; +----------+---------+ | COUNT(*) | name | +----------+---------+ | 1 | Gaurav | | 1 | Aarav | | 1 | Harshit | | 1 | Gaurav | +----------+---------+ 4 rows in set (0.00 sec)
ด้วย GROUP BY เราได้ผลลัพธ์ที่มีความหมายและถูกต้อง