Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tại sao không nên dùng hàm nhóm với trường không nhóm mà không có GROUP BY trong MySQL?

Điều này là do nếu không có mệnh đề GROUP BY, kết quả trả về bởi MySQL có thể gây hiểu lầm. Chúng ta đưa ra ví dụ sau trên bảng 'Student' để minh họa:

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)

Như chúng ta quan sát được từ kết quả truy vấn trên, nó trả về đầu ra của hàm nhóm COUNT(*) là tổng số hàng trong bảng nhưng giá trị 'Gaurav' trong trường 'Name' gây hiểu lầm vì chúng ta không biết cơ sở nào, hoặc là giá trị đầu tiên của cột hay là nó được lưu nhiều lần trong cột, MySQL trả về nó.

Bây giờ nếu chúng ta viết truy vấn này với mệnh đề GROUP BY thì tập kết quả như sau:

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)

Có thể quan sát từ tập kết quả trên rằng với sự giúp đỡ của mệnh đề GROUP BY, chúng ta có được đầu ra có ý nghĩa.