ORDER by là một trong các mệnh đề khá phổ biến trong khi truy vấn trên cơ sở dữ liệu. Bài viết này SmartData sẽ giải thích cặn kẽ cho các bạn ý nghĩa và cách sử dụng mệnh đề ORDER BY trong Mysql.
ORDER BY để làm gì
Khi truy vấn dữ liệu trong các hệ quản trị cơ sở dữ liệu Mysql hoặc một số hệ quản trị cơ sở dữ liệu khác, đôi khi bạn muốn dữ liệu trả ra được sắp xếp theo một tiêu chí nào đó. ORDER BY cho phép bạn sắp xếp bộ dữ liệu trả ra theo thứ tự tăng dần (ACS) hoặc giảm dần (DESC).
Tham khảo cách cài đặt Mysql tại đây
Bạn có thể xem ví dụ sau, giả sử ta có một bảng dữ liệu như sau
Với mệnh đề ORDER BY, ta có thể lấy ra danh sách các “name” phía trên theo thứ tự tăng dần như sau
hoặc giảm dần như sau
Cú pháp của mệnh đề ORDER BY trong mysql
SELECT column-list FROM table_name [WHERE condition] [ORDER BY column1, column2, .. columnN] [ASC | DESC];
Ví dụ với bảng dữ liệu phía trên ta có thể sử dụng order by như sau
SELECT * FROM `nhan_vat` ORDER BY `nhan_vat`.`name` ASC // tăng dần SELECT * FROM `nhan_vat` ORDER BY `nhan_vat`.`name` ASC // giảm dần
Mệnh đề ORDER BY trên nhiều cột
Mệnh đề ORDER BY có thể được sử dụng trên nhiều cột, tư tưởng rất đơn giản, dữ liệu sẽ được sắp xếp lần lượt theo các cột chỉ định từ trái qua phải, Quay lại ví dụ trên, mình sẽ bổ sung thêm một bộ dữ liệu nữa để kết quả của việc order by theo nhiều cột được rõ ràng hơn.
Câu truy vấn sau sẽ order cột “name” với thứ tự tăng dần, và cột “id” với thứ tự giảm dần.
SELECT * FROM `nhan_vat` ORDER BY `nhan_vat`.`name` ASC, `nhan_vat`.`id` desc
Ta được kết quả như sau:
Tại sao lại có két quả trên?
Bởi vì dữ liệu sẽ được ưu tiên order theo cột “name” trước, sau khi order cột “name” xong, với các bản ghi có giá trị “name” giống nhau, yêu cầu order thứ hai – ở đây là order theo cột “id” giảm dần được tiếp tục áp dụng nên bạn sẽ thấy bản ghi “Dương Mịch” có id = 14 được đẩy lên đầu.