Mệnh đề ORDER BY trong SQL Server

Mệnh đề ORDER BY được dùng để lọc bản ghi trong bộ kết quả trả về của SQL Server. Mệnh đề này chỉ có thể dùng trong lệnh SELECT.

Cú pháp mệnh đề ORDER BY

SELECT biu thc FROM bng [WHERE “điu kin”] ORDER BY biu thc [ ASC | DESC ];

Tên các biến và giá trị biến

Biểu thức – cột hoặc giá trị tính toán bạn muốn lấy.

Bảng – bảng mà bạn muốn dùng để lấy bản ghi. Phải có ít nhất 1 bảng trong mệnh đề FROM.

WHERE “điều kiện” – tùy chọn. Các điều kiện phải được đáp ứng thì bản ghi mới được chọn.

ASC – tùy chọn. Lọc kết quả theo thứ tự tăng dần của biểu thức (mặc định nếu không chỉ định rõ).

DESC – tùy chọn. Lọc kết quả theo thứ tự giảm dần của biểu thức.

Lưu ý:

Nếu không chọn cụ thể ASC hay DESC trong mệnh đề ORDER BY thì kết quả sẽ mặc định được sắp xếp theo thứ tự tăng dần, tương đương với ORDER BY “biểu thức” ASC.

Ví dụ – lọc mà không sử dụng thuộc tính ASC/DESC

SELECT ho
FROM nhanvien WHERE nhanvien_id > 1000 ORDER BY ho;

Kết quả trả về sẽ là các bản ghi được lọc theo trường thông tin là họ của nhân viên, theo thứ tự tăng dần, tương đương với mệnh đề dưới đây.

SELECT ho
FROM nhanvien WHERE nhanvien_id > 1000 ORDER BY ho ASC;

Hầu hết các lập trình viên đều bỏ thuộc tính ASC nếu họ muốn sắp xếp theo thứ tự tăng dần.

Ví dụ – sắp xếp theo thứ tự giảm dần

SELECT ho
FROM nhanvien WHERE ten = Sarah ORDER BY ho DESC;

Kết quả là các bản ghi lọc theo họ của nhân viên theo thứ tự giảm dần.

Ví dụ – lọc theo vị trí tương đối

Bạn có thể dùng mệnh đề ORDER BY trong SQL Server để lọc theo vị trí tương đối trong bộ kết quả, trong đó trường đầu tiên được đặt là 1, tiếp theo là 2 và cứ thế tiếp tục….

SELECT ho FROM nhanvien WHERE ho = Anderson ORDER BY 1 DESC;

Trong ví dụ này, kết quả trả về là các bản ghi thuộc trường họ của nhân viên xếp theo thứ tự giảm dần. Vì họ nhân viên nằm ở vị trí số 1 trong bộ kết quả nên kết quả nói trên cũng tương tự như trong mệnh đề ORDER BY dưới đây.

SELECT ho
FROM nhanvien WHERE ho = Anderson ORDER BY ho DESC;

Ví dụ – dùng cả thuộc tính ASC và DESC

SELECT ho, ten FROM nhanvien WHERE ho = Johnson ORDER BY ho DESC, ten ASC;

Ở ví dụ nói trên, bản ghi trả về sẽ là họ nhân viên sắp xếp theo thứ tự giảm dần và tên nhân viên xếp theo thứ tự tăng dần.