Lệnh ORDER BY trong SQL

Trong SQL, mệnh đề ORDER BY được sử dụng để sắp xếp dữ liệu theo thứ tự tăng dần hoặc theo thứ tự giảm dần trên một hoặc nhiều cột. Một số cơ sở dữ liệu sắp xếp các kết quả truy vấn theo thứ tự tăng dần mặc định.

Trong đó, lệnh ASC được sử dụng để sắp xếp tăng dần và DESC được sử dụng để sắp xếp giảm dần.

Ở bài viết này sẽ hướng dẫn chi tiết cho bạn cách sử dụng mệnh đề ORDER BY trong SQL với cú pháp và những ví dụ cụ thể để dễ hình dung và nắm bắt câu lệnh tốt hơn.

Cú pháp lệnh ORDER BY trong SQL

Cú pháp cơ bản của lệnh ORDER BY với câu lệnh SELECT sẽ như sau:

SELECT danhsach_cot  FROM ten_bang  [WHERE dieu_kien]  [ORDER BY cot1, cot2, .. cotN] [ASC | DESC];

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 cot1, cot2, .. cotN] [ASC]

Ví dụ về ORDER BY trong SQL

Giả sử bảng NHANVIEN có các bản ghi như sau:

 +----+----------+-----+-----------+----------+
 | ID | TEN      |TUOI | DIACHI    | LUONG    |
 +----+----------+-----+-----------+----------+
 |  1 | Thanh    |  32 | Haiphong  |  2000.00 |
 |  2 | Loan     |  25 | Hanoi     |  1500.00 |
 |  3 | Nga      |  23 | Hanam     |  2000.00 |
 |  4 | Manh     |  25 | Hue       |  6500.00 |
 |  5 | Huy      |  27 | Hatinh    |  8500.00 |
 |  6 | Cao      |  22 | HCM       |  4500.00 |
 |  7 | Lam      |  24 | Hanoi     | 10000.00 |
 +----+----------+-----+-----------+----------+

Ví dụ sau minh họa cách sắp xếp theo thứ tự tăng dần cho TEN và LUONG.

SQL> SELECT * FROM NHANVIEN  ORDER BY TEN, LUONG; 

Ví dụ trên trả về kết quả:

 +----+----------+-----+-----------+----------+
 | ID | TEN      |TUOI | DIACHI    | LUONG    |
 +----+----------+-----+-----------+----------+
 |  6 | Cao      |  22 | HCM       |  4500.00 |
 |  5 | Huy      |  27 | Hatinh    |  8500.00 |
 |  7 | Lam      |  24 | Hanoi     | 10000.00 |
 |  2 | Loan     |  25 | Hanoi     |  1500.00 |
 |  4 | Manh     |  25 | Hue       |  6500.00 |
 |  3 | Nga      |  23 | Hanam     |  2000.00 |
 |  1 | Thanh    |  32 | Haiphong  |  2000.00 |
 +----+----------+-----+-----------+----------+

Khối lệnh sau sẽ sắp xếp kết quả theo thứ tự giảm dần bởi trường TEN.

SQL> SELECT * FROM NHANVIEN  ORDER BY TEN DESC;

Kết quả trả về là:

 +----+----------+-----+-----------+----------+
 | ID | TEN      |TUOI | DIACHI    | LUONG    |
 +----+----------+-----+-----------+----------+
 |  1 | Thanh    |  32 | Haiphong  |  2000.00 |
 |  3 | Nga      |  23 | Hanam     |  2000.00 |
 |  4 | Manh     |  25 | Hue       |  6500.00 |
 |  2 | Loan     |  25 | Hanoi     |  1500.00 |
 |  7 | Lam      |  24 | Hanoi     | 10000.00 |
 |  5 | Huy      |  27 | Hatinh    |  8500.00 |
 |  6 | Cao      |  22 | HCM       |  4500.00 |
 +----+----------+-----+-----------+----------+