Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เหตุใดเราจึงไม่ควรใช้ฟังก์ชันกลุ่มกับฟิลด์ที่ไม่ใช่กลุ่มโดยไม่มีข้อ GROUP BY ในการสืบค้น MySQL SELECT


เป็นเพราะหากไม่มีส่วนคำสั่ง GROUP BY ผลลัพธ์ที่ส่งคืนโดย MySQL อาจทำให้เข้าใจผิดได้ เรากำลังยกตัวอย่างต่อไปนี้ในตาราง 'นักเรียน' ด้านล่างเพื่อแสดง -

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(*) เป็นจำนวนแถวทั้งหมดในตาราง แต่ค่า '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 เราได้ผลลัพธ์ที่มีความหมาย