Lệnh ORDER BY trong SQL

ORDER BY trong SQL được sử dụng khá nhiều khi lập trình. Dưới đây là những điều bạn cần biết về lệnh ORDER BY trong SQL.

ORDER BY trong SQL là gì?

Lệnh ORDER BY trong SQL được dùng để phân loại dữ liệu theo thứ tự tăng hoặc giảm dần, dựa trên một hoặc nhiều cột. Mệnh đề này có thể phân loại dữ liệu theo một cột hoặc nhiều cột. Phân loại theo nhiều cột có thể hữu ích khi bạn cần phân loại dữ liệu theo thứ bậc, chẳng hạn như phân loại theo bang, thành phố, rồi tới tên người.

ORDER BY được dùng với lệnh SQL SELECT và thường đứng sau WHERE, HAVING và GROUP BY.

Những điểm quan trọng về câu lệnh sắp xếp trong SQL:

  • Một số database phân loại kết quả truy vấn mặc định theo thứ tự tăng dần.
  • Để phân loại dữ liệu theo thứ tự tăng dần, bạn dùng từ khóa ASC.
  • Để phân loại dữ liệu theo thứ tự giảm dần, dùng từ khóa DESC.

Ngoài việc phân loại bản ghi theo thứ tự tăng hoặc giảm dần, mệnh đề ORDER BY đều có thể phân loại dữ liệu trong bảng database theo thứ tự lập trình viên muố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.

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.

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

Câu lệnh ORDER BY với mệnh đề WHERE

Bạn có thể dùng mệnh đề WHERE với lệnh sắp xếp trong SQL để chỉ phân loại các hàng đáp ứng điều kiện cụ thể. Điều này có thể hữu ích khi bạn muốn phân loại một tệp dữ liệu phụ trong bảng dựa trên tiêu chí cụ thể.

Ví dụ:

Giả sử bạn đang cố gắng để truy xuất tất cả bảng ghi từ bảng CUSTOMERS mà tuổi của khách khàng là 25 và phân loại chúng theo thứ tự giảm dần dựa theo tên:

SELECT * FROM CUSTOMERS
WHERE AGE = 25
ORDER BY NAME DESC;

Kết quả:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
+----+----------+-----+-----------+----------+

Câu lệnh ORDER BY với mệnh đề TOP

Bạn có thể dùng mệnh đề TOP với ORDER BY để hạn chế số lượng hàng bằng cách phân loại nó theo thứ tự tăng hoặc giảm dần.

Cú pháp:

SELECT TOP N column1, column2, ...
FROM table_name
ORDER BY column_name1 [ASC | DESC], column_name2 [ASC | DESC], …

Ví dụ:

Giả sử bạn đang cố truy xuất 4 bản ghi hàng đầu từ bảng CUSTOMERS trên mức lương cơ bản và phân loại chúng theo thứ tự tăng dần dựa theo tên.

SELECT TOP 4 SALARY
FROM CUSTOMERS
ORDER BY NAME;

Kết quả:

+----------+
| SALARY   |
+----------+
|  6500.00 |
|  8500.00 |
|  2000.00 |
|  1500.00 |
+----------+

Tóm lại, những điều bạn cần biết khi dùng câu lệnh order by trong SQL:

  • Bất cứ khi nào muốn phân loại bản ghi dựa trên cột được lưu trữ trong bảng cơ sở dữ liệu SQL, bạn có thể cân nhắc dùng lệnh ORDER BY trong SQL.
  • Lệnh ORDER By trong SQL sẽ giúp lập trình viên phân loại các bản ghi dựa trên cột cụ thể trong bảng. Điều đó có nghĩa tất cả giá trị được lưu trong cột mà bạn dùng lệnh ORDERY BY sẽ được phân loại. Các giá trị cột tương ứng sẽ hiện theo thứ tự nhận được từ các bước trước đó.
  • Sử dụng mệnh đề ORDER BY, bạn có thể sắp xếp các bản ghi theo thứ tự tăng dần hoặc giảm dần theo nhu cầu. Các bản ghi sẽ được sắp xếp theo thứ tự tăng dần bất cứ khi nào từ khóa ASC được sử dụng với mệnh đề ORDER by. Từ khóa DESC sẽ sắp xếp các bản ghi theo thứ tự giảm dần.
  • Nếu không có từ khóa nào được chỉ định sau cột mà dựa vào đó chúng ta phải sắp xếp các bản ghi, lúc này, việc sắp xếp sẽ được thực hiện theo mặc định với thứ tự tăng dần.
Thứ Tư, 13/09/2023 16:49
4,812 👨 76.707
0 Bình luận
Sắp xếp theo
    ❖ Học SQL