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

Mệnh đề GROUP BY trong MySQL có thể hoạt động giống như mệnh đề DISTINCT như thế nào?


Khi chúng ta sử dụng mệnh đề GROUP BY trong câu lệnh SELECT mà không sử dụng các hàm tổng hợp thì nó sẽ hoạt động giống như mệnh đề DISTINCT. Ví dụ, chúng ta có bảng sau -

mysql> Select * from testing;
+------+---------+---------+
| id   | fname   | Lname   |
+------+---------+---------+
|  200 | Raman   | Kumar   |
|  201 | Sahil   | Bhalla  |
|  202 | Gaurav  | NULL    |
|  203 | Aarav   | NULL    |
|  204 | Harshit | Khurana |
|  205 | Rahul   | NULL    |
|  206 | Piyush  | Kohli   |
|  207 | Lovkesh | NULL    |
|  208 | Gaurav  | Kumar   |
|  209 | Raman  | Kumar    |
+------+---------+---------+
10 rows in set (0.00 sec)

Bằng cách sử dụng mệnh đề DISTINCT trên cột ‘Lname’, MySQL trả về tập kết quả sau.

mysql> select Distinct LNAME from testing;
+---------+
| LNAME   |
+---------+
| Kumar   |
| Bhalla  |
| NULL    |
| Khurana |
| Kohli   |
+---------+
5 rows in set (0.00 sec)

Bây giờ, bằng cách sử dụng mệnh đề GROUP BY như sau, chúng ta có thể nhận được bộ kết quả tương tự như chúng ta nhận được bằng cách sử dụng DISTINCT -

mysql> Select LNAME from testing GROUP BY Lname;
+---------+
| LNAME   |
+---------+
| NULL    |
| Bhalla  |
| Khurana |
| Kohli   |
| Kumar   |
+---------+
5 rows in set (0.04 sec)

Chúng ta có thể quan sát thấy sự khác biệt giữa cả hai tập kết quả do MySQL trả về là tập kết quả trả về bởi truy vấn MySQL sử dụng mệnh đề GROUP BY được sắp xếp và ngược lại, tập kết quả trả về bởi truy vấn MySQL sử dụng mệnh đề DISTINCT không được sắp xếp.