Trong SQL, mệnh đề ORDER BY được sử dụng để sắp xếp dữ liệu theo thứ tự tăng hoặc giảm dần trên một hoặc nhiều cột. Hầu hết các database hiện đại 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à ví dụ cụ thể.
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 * FROM table_name ORDER BY column_name ASC|DESC table_name: tên của bảng column_name: tên cột muốn sắp xếp ASC: Sắp xếp tăng dần DESC: Sắp xếp giảm dần
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 | +----+----------+-----+-----------+----------+