Tuyển dụng
Viettel IDC

Lệnh ORDER BY trong SQL: Cách sắp xếp dữ liệu từ A-Z

12/12/2025

Trong SQL, lệnh ORDER BY là một công cụ mạnh mẽ cho phép bạn sắp xếp kết quả của các câu lệnh SELECT dựa trên các cột được chỉ định. Bài viết này, Viettel IDC sẽ cung cấp cái nhìn tổng quan toàn diện về lệnh ORDER BY trong SQL, bao gồm câu lệnh, ứng dụng và các ví dụ phổ biến.

Lệnh ORDER BY trong SQL là gì?

Lệnh ORDER BY trong SQL là gì?

Lệnh ORDER BY trong SQL là mệnh đề được sử dụng để xác định thứ tự sắp xếp của tập kết quả trả về từ một câu lệnh SELECT.

Về mặt kỹ thuật, dữ liệu trong các bảng quan hệ được lưu trữ không theo thứ tự cố định. Do đó, ORDER BY là công cụ bắt buộc nếu người quản trị dữ liệu muốn đảm bảo tính nhất quán về thứ tự hiển thị của các bản ghi (hàng) dựa trên giá trị của một hoặc nhiều cột cụ thể.

Lệnh ORDER BY trong SQL được đặt ở cuối truy vấn, sau các lệnh WHERE , HAVING và GROUP BY (nếu có). Sau đây là một số điểm quan trọng chúng ta cần biết về ORDER BY:

- Hầu hết các cơ sở dữ liệu đều sắp xếp kết quả truy vấn theo thứ tự tăng dần theo mặc định.

- Sử dụng từ khóa ASC để chỉ định rõ thứ tự tăng dần.

- Sử dụng từ khóa DESC để sắp xếp theo thứ tự giảm dần.

Đặc biệt, khi định nghĩa nhiều cột trong mệnh đề ORDER BY, hệ thống sẽ thiết lập độ ưu tiên sắp xếp từ trái sang phải. Dữ liệu sẽ được sắp xếp theo cột đầu tiên; nếu tồn tại các giá trị trùng nhau, hệ thống mới xét tiếp đến cột thứ hai để phân định thứ tự.
Có thể bạn quan tâm:

- SQL là gì? Cách download và cài đặt SQL Server từ A - Z
- MariaDB và MySQL khác gì nhau? Nên sử dụng hệ quản trị nào?

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

Cấu trúc chuẩn của một câu lệnh ORDER BY trong SQL có sử dụng sắp xếp sẽ trông như sau:

SELECT  Cot_A, Cot_B, ...

FROM    Ten_Bang

ORDER BY Cot_A [ASC | DESC], Cot_B [ASC | DESC], ...];

Trong các truy vấn phức tạp, ORDER BY thường hoạt động song song với WHERE để tối ưu hóa kết quả hiển thị sau khi đã lọc dữ liệu. Nên một quy tắc bất biến đó là WHERE luôn phải đứng TRƯỚC ORDER BY.

SELECT  Cot_A, Cot_B, ...

FROM    Ten_Bang

WHERE   Dieu_Kien_Loc      

ORDER BY Cot_A, Cot_B, ... [ASC | DESC];

Để viết đúng câu lệnh ORDER BY trong SQL, bạn cần nắm rõ chức năng của 4 từ khóa chính:

- SELECT: Dùng để chỉ định những dữ liệu (cột) nào bạn muốn xem/phân tích. Dùng dấu sao * nếu muốn xem toàn bộ bảng.

- FROM: Chỉ định dữ liệu được lấy từ bảng nào.

- WHERE (Tùy chọn): Dùng để đặt ra tiêu chí lọc nhằm thu hẹp kết quả. Tại đây bạn có thể dùng các toán tử như =, LIKE, >, <.

- ORDER BY: Xác định cột dùng để sắp xếp kết quả. Nếu bạn không viết gì thêm, SQL mặc định hiểu là ASC (tăng dần). Muốn giảm dần, bạn bắt buộc phải viết thêm DESC.

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

Khi nào nên sử dụng lệnh ORDER BY trong SQL?

Thiết lập trật tự nhất quán cho kết quả truy vấn

Trong quy trình xử lý dữ liệu, lệnh ORDER BY trong SQL là bước chuyển hóa quan trọng từ "dữ liệu thô" sang "thông tin có cấu trúc". Về bản chất, các hệ quản trị cơ sở dữ liệu (DBMS) không bao giờ cam kết thứ tự trả về mặc định của các bản ghi. 

Do đó, bạn cần kích hoạt mệnh đề này khi muốn áp đặt một "kỷ luật" cụ thể cho dữ liệu đầu ra. Nó đảm bảo tính nhất quán tuyệt đối, biến một danh sách hỗn độn thành một tập hợp tuân theo quy tắc (như tăng dần hoặc giảm dần) đúng với ý đồ của người lập trình.

Tối ưu hóa quy trình phân tích và báo cáo

Lệnh ORDER BY trong SQL là mắt xích không thể thiếu để chuẩn hóa dữ liệu trước khi đưa vào các báo cáo hoặc công cụ trực quan hóa. Việc sắp xếp dữ liệu giúp làm nổi bật các xu hướng hoặc các giá trị ngoại lai quan trọng. 

Ví dụ, thay vì nhìn vào một bảng số liệu lộn xộn, việc sắp xếp doanh thu từ cao xuống thấp sẽ giúp nhà quản lý ngay lập tức nhận diện được đâu là sản phẩm chủ lực "Best seller" mà không cần tốn thời gian dò tìm thủ công trong hàng nghìn dòng dữ liệu.

Xây dựng logic hiển thị cho ứng dụng, web

Cuối cùng, mệnh đề này đóng vai trò cốt lõi trong việc truy xuất dữ liệu theo trình tự "có ý nghĩa" đối với trải nghiệm người dùng (UX). Hầu hết các logic phần mềm hiện đại đều cần dữ liệu tuân theo một dòng chảy nhất định. 

Điển hình như các trang tin tức cần hiển thị bài viết mới nhất lên đầu (sắp xếp theo thời gian), hay các sàn thương mại điện tử cần chức năng lọc giá rẻ nhất (sắp xếp theo giá tiền). Tất cả các logic này đều dựa vào khả năng điều hướng dòng chảy dữ liệu của ORDER BY.

Ví dụ lệnh ORDER BY trong SQL 

Để hiểu rõ cách ORDER BY vận hành, chúng ta hãy cùng thao tác trên một bảng dữ liệu giả lập có tên là HOC_SINH. Bảng này lưu trữ thông tin cá nhân của các học sinh bao gồm: Số báo danh (SBD), Tuổi (Tuoi), Họ tên (Ho_Ten), Địa chỉ (Dia_Chi) và Số điện thoại (SDT).

Dưới đây là dữ liệu ban đầu của bảng:

SBD

Tuoi

Ho_Ten

Dia_Chi

SDT

1

18

Nguyễn Văn An

123 Đường Láng, Hà Nội

0901234561

2

18

Trần Thị Bình

321 Cầu Giấy, Hà Nội

0901234562

3

19

Lê Văn Cường

567 Nguyễn Trãi, TP.HCM

0901234563

4

19

Phạm Minh Dũng

456 Lê Duẩn, Đà Nẵng

0901234564

5

20

Hoàng Thị Em

789 Ninh Kiều, Cần Thơ

0901234565

6

21

Vũ Văn Giang

246 Lạch Tray, Hải Phòng

0901234566

7

22

Đặng Thị Hương

369 Yersin, Đà Lạt

0901234567

Ví dụ 1: Sắp xếp dựa trên một cột đơn lẻ

Trong ví dụ này, chúng ta sẽ truy xuất toàn bộ dữ liệu từ bảng HOC_SINH, nhưng yêu cầu kết quả phải được sắp xếp theo cột SBD theo thứ tự giảm dần. Đây là trường hợp thường gặp khi bạn muốn xem danh sách những học sinh mới nhất vừa được thêm vào hệ thống.

Câu lệnh ORDER BY trong SQL:

SELECT * FROM HOC_SINH 

ORDER BY SBD DESC;

Bảng kết quả hiển thị:

SBD

Tuoi

Ho_Ten

Dia_Chi

SDT

7

22

Đặng Thị Hương

369 Yersin, Đà Lạt

0901234567

6

21

Vũ Văn Giang

246 Lạch Tray, Hải Phòng

0901234566

5

20

Hoàng Thị Em

789 Ninh Kiều, Cần Thơ

0901234565

4

19

Phạm Minh Dũng

456 Lê Duẩn, Đà Nẵng

0901234564

3

19

Lê Văn Cường

567 Nguyễn Trãi, TP.HCM

0901234563

2

18

Trần Thị Bình

321 Cầu Giấy, Hà Nội

0901234562

1

18

Nguyễn Văn An

123 Đường Láng, Hà Nội

0901234561

Ví dụ 2: Sắp xếp ưu tiên dựa trên nhiều cột

Trong ví dụ nâng cao này, chúng ta sẽ truy xuất toàn bộ dữ liệu từ bảng HOC_SINH, nhưng áp dụng quy tắc sắp xếp phức tạp hơn:

Đầu tiên, sắp xếp theo độ Tuổi giảm dần. Tiếp theo, nếu có nhiều người cùng tuổi, hãy sắp xếp những người đó theo Tên tăng dần.

Để thực hiện điều này, chúng ta liệt kê các cột trong mệnh đề ORDER BY và ngăn cách chúng bằng dấu phẩy ,.

Câu lệnh ORDER BY trong SQL:

SELECT * FROM HOC_SINH 

ORDER BY Tuoi DESC, Ho_Ten ASC;

Bảng kết quả:

SBD

Tuổi

Họ Tên

Địa Chỉ

SĐT

7

22

Đặng Thị Hương

369 Yersin, Đà Lạt

0901234567

6

21

Vũ Văn Giang

246 Lạch Tray, Hải Phòng

0901234566

5

20

Hoàng Thị Em

789 Ninh Kiều, Cần Thơ

0901234565

3

19

Lê Văn Cường

567 Nguyễn Trãi, TP.HCM

0901234563

4

19

Phạm Minh Dũng

456 Lê Duẩn, Đà Nẵng

0901234564

1

18

Nguyễn Văn An

123 Đường Láng, Hà Nội

0901234561

2

18

Trần Thị Bình

321 Cầu Giấy, Hà Nội

0901234562

Các khó khăn khi dùng lệnh ORDER BY trong SQL

Lỗi tên cột hoặc cột không tồn tại

Đây là lỗi sơ đẳng nhưng xảy ra thường xuyên nhất đối với lệnh ORDER BY trong SQL. Triệu chứng là hệ thống báo lỗi "Column not found" hoặc "Invalid identifier".

Lỗi này thường xảy ra do sơ suất đánh máy hoặc nhầm lẫn giữa chữ hoa và chữ thường nếu cơ sở dữ liệu có phân biệt. Để khắc phục, bạn chỉ cần kiểm tra kỹ lại tên cột trong mệnh đề ORDER BY xem đã khớp hoàn toàn với tên cột thực tế trong bảng dữ liệu hay chưa.

Lỗi trùng tên cột 

Khi bạn dùng lệnh JOIN để kết nối nhiều bảng, nếu các bảng này có cột cùng tên (ví dụ đều có cột ID), SQL sẽ báo lỗi vì không biết bạn muốn sắp xếp theo ID của bảng nào.

Giải pháp là hãy luôn chỉ định rõ nguồn gốc của cột bằng cú pháp Ten_Bang.Ten_Cot. Ví dụ: thay vì viết ORDER BY ID, hãy viết ORDER BY HocSinh.ID để hệ thống hiểu chính xác ý định của bạn.

Rắc rối với giá trị rỗng NULL

Theo mặc định, SQL coi NULL là giá trị nhỏ nhất. Do đó, khi bạn sắp xếp tăng dần (ASC), các dòng dữ liệu trống sẽ tự động "nhảy" lên đầu danh sách, gây mất thẩm mỹ cho báo cáo.

Nếu muốn đẩy các giá trị NULL này xuống dưới cùng, bạn có thể dùng mẹo gán tạm cho nó một giá trị lớn bằng hàm ISNULL() hoặc COALESCE(). Một số hệ quản trị hiện đại (như Oracle, PostgreSQL) hỗ trợ từ khóa NULLS LAST để xử lý việc này nhanh hơn.

Lệnh ORDER BY trong SQL không chỉ là một lệnh sắp xếp đơn thuần, mà là công cụ quyền lực giúp bạn chuyển hóa dữ liệu thô thành thông tin có cấu trúc và dễ khai thác. Qua bài hướng dẫn này, Viettel IDC hy vọng bạn đã nắm vững cú pháp chuẩn và cách vận dụng linh hoạt các chế độ sắp xếp trên một hoặc nhiều cột. Chúc bạn thao tác thành công với SQL!

Để được hỗ trợ tư vấn và tìm hiểu các dịch vụ của Viettel, bạn có thể liên hệ trực tiếp tới Viettel IDC qua các kênh:

- Hotline: 1800 8088 (miễn phí cước gọi)

- Fanpage: https://www.facebook.com/viettelidc  

Bình luận ()

Đăng nhập | Đăng ký
để gửi bình luận
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Xem thêm bình luận

Tin liên quan

29/09/2026

"SOVEREIGN CLOUD" VÀ NGHỊCH LÝ CHUYỂN ĐỔI SỐ: GIẢI MÃ BÀI TOÁN TUÂN THỦ CHO NGÀNH TÀI CHÍNH & CHÍNH PHỦ

Các tổ chức thuộc nhóm ngành trọng yếu như tài chính, ngân hàng (BFSI) và cơ quan nhà nước đang khao khát hiện đại hóa hệ thống IT (chuyển đổi sang kiến trúc Microservices, sử dụng Container/Kubernetes) để tăng tốc độ triển khai dịch vụ và nâng cao trải nghiệm người dùng. Tuy nhiên, họ lại đang vấp phải một "nghịch lý" lớn: Càng muốn áp dụng công nghệ Cloud hiện đại, rào cản về tuân thủ pháp lý và an toàn thông tin càng trở nên khắt khe.

29/09/2026

BÀI TOÁN "NOISY NEIGHBOR" TRÊN CLOUD VÀ CHIẾN LƯỢC TỐI ƯU HIỆU NĂNG CHO HỆ THỐNG CỐT LÕI

Trong kỷ nguyên mà dữ liệu là "dầu mỏ mới", việc vận hành các hệ thống xương sống (Core ERP, Core Banking) hay các workload tính toán chuyên sâu (AI, Machine Learning, Datalake) đòi hỏi năng lực phần cứng vô cùng mạnh mẽ.

27/09/2026

"BÃO GIÁ" HẠ TẦNG CNTT VÀ BÀI TOÁN SỐNG CÒN CỦA DOANH NGHIỆP: VÌ SAO PRIVATE CLOUD DẠNG DỊCH VỤ LÊN NGÔI?

Làn sóng bùng nổ hạ tầng AI toàn cầu đang tạo ra một "cơn địa chấn" về giá phần cứng máy chủ, chip nhớ DRAM, ổ cứng doanh nghiệp và chi phí năng lượng. Đứng trước áp lực phải chuyển đổi số nhưng lại vấp phải bài toán chi phí đầu tư (CapEx) đắt đỏ cùng thời gian giao hàng kéo dài hàng tháng, các nhà quản trị công nghệ (CIO) và tài chính (CFO) đang tìm kiếm một hướng đi mới: Không cần bỏ hàng tỷ đồng mua sắm hạ tầng mà vẫn sở hữu riêng một hệ thống Private Cloud hoàn chỉnh, an toàn và sẵn sàng vận hành ngay lập tức.

29/09/2026

Digital Workplace là gì? Xu hướng môi trường làm việc số cho doanh nghiệp

Digital Workplace là gì? Khám phá mô hình vận hành, thành phần, lợi ích, ứng dụng, thách thức và xu hướng môi trường làm việc số cho doanh nghiệp.

29/09/2026

Lỗ hổng Shellshock là gì? Cơ chế, tác động và cách khắc phục

Lỗ hổng Shellshock (CVE-2014-6271) trong Bash là gì, vì sao nghiêm trọng? Tìm hiểu nguyên nhân, hệ thống bị ảnh hưởng và cách kiểm tra, vá lỗi.

29/09/2026

Scratch là gì? Cách hoạt động, ứng dụng và đối tượng phù hợp

Scratch là gì? Tìm hiểu cách lập trình bằng khối lệnh, các khái niệm có thể học, ứng dụng thực tế và sự khác nhau giữa Scratch với ScratchJr.

29/09/2026

Phân biệt các loại Web Hosting: Đâu là lựa chọn phù hợp cho website?

Phân biệt các loại Web Hosting và tìm hiểu cách mỗi mô hình hoạt động, từ đó lựa chọn giải pháp phù hợp với nhu cầu, quy mô và định hướng phát triển website.

29/09/2026

Website có cần hosting không? Giải đáp chi tiết từ A-Z

Website có cần hosting không? Tìm hiểu vai trò của hosting, domain và các trường hợp cần và không cần mua hosting riêng cho website.

29/09/2026

Top nhà cung cấp dịch vụ Cloud Camera uy tín tại Việt Nam

Top nhà cung cấp dịch vụ Cloud Camera uy tín tại Việt Nam, cùng tiêu chí lựa chọn và những lưu ý quan trọng trước khi đăng ký dịch vụ.

28/09/2026

Trigger là gì trong DBMS? Cách hoạt động, các loại phổ biến và ứng dụng

Trigger là gì trong DBMS? Tìm hiểu cách trigger hoạt động, các loại phổ biến, ví dụ minh họa, ưu nhược điểm và khi nào nên sử dụng.