Khi làm việc với cơ sở dữ liệu, đôi khi bạn không chỉ cần truy xuất dữ liệu, mà còn cần hiển thị chúng theo thứ tự hợp lý – chẳng hạn như sắp xếp sinh viên theo điểm cao nhất, hoặc đơn hàng theo ngày gần nhất. Câu lệnh ORDER BY
chính là công cụ giúp bạn làm điều đó.
Trong bài học này, bạn sẽ học cách sử dụng ORDER BY
để sắp xếp kết quả truy vấn theo một hoặc nhiều cột, với thứ tự tăng dần (ASC
) hoặc giảm dần (DESC
).
Cú pháp của ORDER BY
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
ORDER BY
: từ khóa để bắt đầu sắp xếp.ASC
: sắp xếp tăng dần (mặc định).DESC
: sắp xếp giảm dần.
Ví dụ đơn giản – Sắp xếp tăng dần
SELECT * FROM students
ORDER BY name ASC;
→ Truy vấn trên sẽ liệt kê danh sách học sinh theo thứ tự tên từ A đến Z.
Sắp xếp giảm dần theo một cột
SELECT * FROM students
ORDER BY score DESC;
→ Danh sách học sinh được sắp xếp từ người có điểm cao nhất đến thấp nhất.
Sắp xếp theo nhiều cột
Giả sử bạn muốn sắp xếp theo lớp học, và trong mỗi lớp thì sắp xếp tiếp theo tên học sinh.
SELECT * FROM students
ORDER BY class ASC, name ASC;
→ Học sinh sẽ được nhóm theo lớp, và trong từng lớp, tên được sắp xếp theo thứ tự A-Z.
Kết hợp WHERE và ORDER BY
Bạn có thể kết hợp lọc dữ liệu với sắp xếp:
SELECT * FROM students
WHERE score >= 8
ORDER BY score DESC;
→ Chỉ hiển thị học sinh có điểm từ 8 trở lên, và sắp xếp từ cao xuống thấp.
Lưu ý hiệu năng
- Khi làm việc với dữ liệu lớn, sắp xếp có thể ảnh hưởng hiệu năng.
- Để tăng tốc độ, bạn nên cân nhắc tạo index cho cột được sắp xếp nếu cần dùng thường xuyên.
Bài tập gợi ý
- Sắp xếp bảng
orders
theo ngày tạo đơn hàng mới nhất. - Lấy danh sách học sinh có điểm lớn hơn 6, sắp xếp theo điểm giảm dần.
Kết luận
ORDER BY
là một công cụ mạnh giúp bạn làm cho kết quả truy vấn trở nên rõ ràng và dễ hiểu hơn. Dù đơn giản, nhưng trong thực tế nó được sử dụng thường xuyên để xây dựng các báo cáo, bảng điều khiển, hay giao diện người dùng.
Bài tiếp theo chúng ta sẽ học cách giới hạn kết quả hiển thị với LIMIT
.
Thảo luận