Cách sắp xếp thứ tự của các kết quả trả về trong MySQL
- Trong hệ quản trị cơ sở dữ liệu MySQL, lệnh ORDER BY thường được dùng kết hợp với lệnh SELECT để sắp xếp các kết quả trả về theo thứ tự tăng dần hoặc giảm dần (dựa trên giá trị của một cột nào đó)
- Nếu muốn sắp xếp kết quả theo thứ tự TĂNG DẦN thì sử dụng cú pháp:
SELECT column1, column2, column3, . . . .
FROM table_name
ORDER BY columnN ASC;
- Nếu muốn sắp xếp kết quả theo thứ tự GIẢM DẦN thì sử dụng cú pháp:
SELECT column1, column2, column3, . . . .
FROM table_name
ORDER BY columnN DESC;
- Lưu ý: ColumnN là tên của cái cột mà chúng ta muốn dựa vào nó để sắp xếp thứ tự của các kết quả trả về.
MỘT SỐ VÍ DỤ
- Trong bài học này, tôi sẽ sử dụng cái bảng Student như bên dưới để làm một số ví dụ minh họa.
ID | Name | Gender | Age | City |
1 | Lê Thị Tuyết Mai | Nữ | 23 | An Giang |
2 | Tây Môn Khánh | Nam | 19 | Cần Thơ |
3 | Phan Kim Liên | Nữ | 20 | Cần Thơ |
4 | Nguyễn Thành Sáng | Nam | 24 | Bạc Liêu |
5 | Võ Đại Lang | Nam | 19 | An Giang |
6 | Nguyễn Thành Nhân | Nam | 22 | Bạc Liêu |
7 | Lý Mạc Sầu | Nữ | 21 | Cần Thơ |
8 | Nguyễn Sơn Tuyến | Nữ | 22 | An Giang |
9 | Âu Dương Phong | Nam | 20 | Bạc Liêu |
- Liệt kê danh sách sinh viên theo thứ tự tuổi tăng dần.
SELECT * FROM Student ORDER BY Age ASC;
- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới.
ID | Name | Gender | Age | City |
2 | Tây Môn Khánh | Nam | 19 | Cần Thơ |
5 | Võ Đại Lang | Nam | 19 | An Giang |
3 | Phan Kim Liên | Nữ | 20 | Cần Thơ |
9 | Âu Dương Phong | Nam | 20 | Bạc Liêu |
7 | Lý Mạc Sầu | Nữ | 21 | Cần Thơ |
6 | Nguyễn Thành Nhân | Nam | 22 | Bạc Liêu |
8 | Nguyễn Sơn Tuyến | Nữ | 22 | An Giang |
1 | Lê Thị Tuyết Mai | Nữ | 23 | An Giang |
4 | Nguyễn Thành Sáng | Nam | 24 | Bạc Liêu |
- Lưu ý: Khi sử dụng lệnh ORDER BY thì mặc định các kết quả trả về sẽ được sắp xếp theo thứ tự tăng dần. Cho nên, nếu muốn sắp xếp theo thứ tự tăng dần thì chúng ta không nhất thiết phải thêm từ ASC.
- Ví dụ như SELECT * FROM Student ORDER BY Age ASC; và SELECT * FROM Student ORDER BY Age; đều có chung một ý nghĩa.
- Liệt kê danh sách sinh viên theo thứ tự tuổi giảm dần.
SELECT * FROM Student ORDER BY Age DESC;
- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới.
ID | Name | Gender | Age | City |
4 | Nguyễn Thành Sáng | Nam | 24 | Bạc Liêu |
1 | Lê Thị Tuyết Mai | Nữ | 23 | An Giang |
6 | Nguyễn Thành Nhân | Nam | 22 | Bạc Liêu |
8 | Nguyễn Sơn Tuyến | Nữ | 22 | An Giang |
7 | Lý Mạc Sầu | Nữ | 21 | Cần Thơ |
3 | Phan Kim Liên | Nữ | 20 | Cần Thơ |
9 | Âu Dương Phong | Nam | 20 | Bạc Liêu |
2 | Tây Môn Khánh | Nam | 19 | Cần Thơ |
5 | Võ Đại Lang | Nam | 19 | An Giang |
- Liệt kê danh sách sinh viên theo thứ tự tuổi giảm dần, rồi đến thứ tự thành phố tăng dần.
SELECT * FROM Student ORDER BY Age DESC, City ASC;
- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới.
ID | Name | Gender | Age | City |
4 | Nguyễn Thành Sáng | Nam | 24 | Bạc Liêu |
1 | Lê Thị Tuyết Mai | Nữ | 23 | An Giang |
8 | Nguyễn Sơn Tuyến | Nữ | 22 | An Giang |
6 | Nguyễn Thành Nhân | Nam | 22 | Bạc Liêu |
7 | Lý Mạc Sầu | Nữ | 21 | Cần Thơ |
9 | Âu Dương Phong | Nam | 20 | Bạc Liêu |
3 | Phan Kim Liên | Nữ | 20 | Cần Thơ |
5 | Võ Đại Lang | Nam | 19 | An Giang |
2 | Tây Môn Khánh | Nam | 19 | Cần Thơ |
- Lưu ý: Nếu chúng ta sắp xếp thứ tự của các kết quả trả về dựa trên nhiều cột thì những cột nào khai báo trước sẽ được sắp xếp trước.
- Ví dụ như khi chúng ta thực thi lệnh SELECT * FROM Student ORDER BY City ASC, Age DESC; thì nó sẽ cho ta một bảng dữ liệu khác so với câu lệnh phía trên.
ID | Name | Gender | Age | City |
1 | Lê Thị Tuyết Mai | Nữ | 23 | An Giang |
8 | Nguyễn Sơn Tuyến | Nữ | 22 | An Giang |
5 | Võ Đại Lang | Nam | 19 | An Giang |
4 | Nguyễn Thành Sáng | Nam | 24 | Bạc Liêu |
6 | Nguyễn Thành Nhân | Nam | 22 | Bạc Liêu |
9 | Âu Dương Phong | Nam | 20 | Bạc Liêu |
7 | Lý Mạc Sầu | Nữ | 21 | Cần Thơ |
3 | Phan Kim Liên | Nữ | 20 | Cần Thơ |
2 | Tây Môn Khánh | Nam | 19 | Cần Thơ |