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

MySQL "sắp xếp theo" bên trong "nhóm theo"? Nó có khả thi không?

Thay vì sử dụng ORDER BY bên trong GROUP BY, bạn có thể sử dụng hàm tổng hợp MAX ().

Cú pháp như sau -

SELECT yourNameColumnName,MAX(yourRankColumnName) FROM yourTableName
GROUP BY yourNameColumnName;

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table MaxDemo
   -> (
   -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> UserName varchar(20),
   -> UserRank int
   -> );
Query OK, 0 rows affected (0.77 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -

mysql> insert into MaxDemo(UserName,UserRank) values('Larry',2);
Query OK, 1 row affected (0.21 sec)
mysql> insert into MaxDemo(UserName,UserRank) values('Sam',1);
Query OK, 1 row affected (0.17 sec)
mysql> insert into MaxDemo(UserName,UserRank) values('Sam',2);
Query OK, 1 row affected (0.15 sec)

Bây giờ bạn có thể hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from MaxDemo;

Đầu ra

+--------+----------+----------+
| UserId | UserName | UserRank |
+--------+----------+----------+
|      1 | Larry    |        2 |
|      2 | Sam      |        1 |
|      3 | Sam      |        2 |
+--------+----------+----------+
3 rows in set (0.00 sec)

Đây là truy vấn sử dụng hàm MAX () để nhận kết quả của bạn -

mysql> select UserName,MAX(UserRank) from MaxDemo group by UserName;

Đầu ra

+----------+---------------+
| UserName | MAX(UserRank) |
+----------+---------------+
| Larry    |             2 |
| Sam      |             2 |
+----------+---------------+
2 rows in set (0.00 sec)