Bài 2.3. Lệnh ORDER BY
Nội dung bài học
Mục đích sử dụng
- Sử dụng mệnh đề ORDER BY để sắp xếp kết quả trả về bởi câu truy vấn SELECT theo một trật tự nào đó.
- Trong SQL, bạn chỉ có thể sắp xếp kết quả với ORDER BY.
- Theo mặc định, kết quả của truy vấn SELECT không theo bất cứ một trật tự cụ thể nào.
Cấu trúc lệnh
- Cấu trúc lệnh sử dụng với mệnh đề ORDER BY:
SELECT
columns
FROM
tables
ORDER BY
columns|expression [ASC|DESC]
- Trong đó:
- Các lệnh màu xanh là mặc định, luôn viết hoa.
- colums là danh sách các cột muốn chọn.
- tables là danh sách các bảng muốn lấy dữ liệu.
- column|expression là các cột hoặc biểu thức được sử dụng để làm tiêu chí sắp xếp. Nếu bạn chọn nhiều tiêu chí để sắp xếp, tiêu chí đầu tiên sẽ được triển khai trước, sau đó mới đến tiêu chí kế tiếp và cứ tiếp tục như vậy.
- Tên các cột xuất hiện trong mệnh đề ORDER BY phải xuất hiện trong danh sách cột được chọn bởi SELECT hoặc tồn tại trong bảng chỉ định sau mệnh đề FROM.
- ASC|DESC là cách thức sắp xếp các cột hoặc biểu thức.
- Mặc định nếu không ghi gì thì DBMS sẽ sử dụng ASC – sắp xếp tăng dần. Ngược lại, DESC nghĩa là sắp xếp kết quả trả về theo trật tự giảm dần của tiêu chí(cột/biểu thức) được chọn.
- ASC là viết tắt của ascending order. DESC là descending order.
- ASC sắp xếp kết quả theo thứ tự từ giá trị nhỏ nhất đến lớn nhất của tiêu chí được chọn.
- DESC sắp xếp kết quả từ giá trị lớn nhất đến nhỏ nhất của tiêu chí được chọn.
- SQL Server coi giá trị NULL là giá trị nhỏ nhất.
- Trong câu truy vấn có mệnh đề ORDER BY, mệnh đề này sẽ là thứ cuối cùng được thực thi khi triển khai câu truy vấn. Tức là sau khi có kết quả thì kết quả đó mới được đem đi sắp xếp lại.
Ví dụ minh họa
- Database mẫu: click vào đây

- Các ví dụ:
- Ví dụ 1_sắp xếp giảm dần theo 1 tiêu chí: cho biết mã, tên, điểm TB các sinh viên trong bảng Student. Kết quả sắp xếp giảm dần theo điểm TB.
SELECT
Id, FullName, Gpa
FROM
Student
ORDER BY
Gpa DESC

-
- Ví dụ 2_sắp xếp tăng dần theo 1 tiêu chí: Cho biết mã, tên, điểm TB các sinh viên trong bảng Student. Kết quả sắp xếp tăng dần theo điểm TB.
SELECT
Id, FullName, Gpa
FROM
Student
ORDER BY
Gpa

-
- Ví dụ 3_sắp xếp tăng dần theo nhiều tiêu chí: Cho biết tên, ngày sinh, điểm TB các sinh viên học chuyên ngành CNTT, sắp xếp theo điểm tăng dần, ngày sinh tăng dần.
SELECT
FullName, BirthDate, Gpa
FROM
Student
WHERE
Major = 'CNTT'
ORDER BY
Gpa,
BirthDate

-
- Ví dụ 4_sắp xếp theo nhiều tiêu chí khác thứ tự sắp xếp: Cho biết tên, ngày sinh, điểm TB các sinh viên học chuyên ngành CNTT, sắp xếp theo điểm giảm dần, ngày sinh tăng dần.
SELECT
FullName, BirthDate, Gpa
FROM
Student
WHERE
Major = 'CNTT'
ORDER BY
Gpa DESC,
BirthDate ASC

-
- Ví dụ 5_sắp xếp theo tiêu chí không bao gồm trong vế SELECT: Cho biết mã, tên, điểm các sinh viên trong bảng Student sắp xếp tăng dần theo ngày sinh.
SELECT
Id, FullName, Gpa
FROM
Student
ORDER BY
BirthDate ASC

-
- Ví dụ 6_sắp xếp theo kết quả một biểu thức nào đó: Cho biết thông tin các sinh viên có trong bảng Student, sắp xếp theo độ dài họ tên tăng dần.
SELECT
*
FROM
Student
ORDER BY
LEN(FullName) ASC

Yêu cầu thực hành
- Sắp xếp danh sách môn học theo độ dài tên môn học tăng dần.
- Sắp xếp danh sách môn học theo số tín chỉ giảm dần, tên tăng dần.
- Cho biết mã, tên môn học trong đó sắp xếp theo số tiết tăng dần.
- Cho biết mã, tên môn học, số tín chỉ của các môn học sắp xếp theo thứ tự từ điển(*) của loại môn học.
(*) – Thứ tự từ điển là thứ tự a-z, 0-9.
Lời giải mẫu: click vào đây
