Web Cơ Bản

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
Ví dụ 1:

- 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;SELECT * FROM Student ORDER BY Age; đều có chung một ý nghĩa.

Ví dụ 2:

- 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
Ví dụ 3:

- 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ơ