Computer >> Máy Tính >  >> Lập trình >> MySQL

Tại sao chúng ta không nên sử dụng các hàm nhóm với các trường không phải nhóm mà không có mệnh đề GROUP BY trong truy vấn SELECT trong MySQL?

Đó là bởi vì không có mệnh đề GROUP BY, kết quả trả về của MySQL có thể gây hiểu nhầm. Chúng tôi đang đưa ra ví dụ sau trên bảng "Sinh viên" được đưa ra bên dưới, để chứng minh điều đó -

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 có thể quan sát từ kết quả của truy vấn ở trên rằng nó trả về kết quả đầ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 'Tên' bị sai lệch bởi vì chúng tôi làm trên cơ sở nào , hoặc nó là giá trị đầu tiên của cột hoặc nó được lưu trữ nhiều lần trong cột, MySQL sẽ 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)

Từ tập kết quả trên có thể nhận thấy rằng với sự trợ giúp của mệnh đề GROUP BY, chúng tôi đã có được một kết quả có ý nghĩa.