Câu lệnh SQL ORDER BY xác định thứ tự các bản ghi được trả về bởi truy vấn. Bạn có thể trả về bản ghi theo thứ tự tăng dần hoặc giảm dần theo giá trị của bất kỳ cột nào trong bảng.
Việc sắp xếp kết quả truy vấn giúp dễ dàng tìm thấy bản ghi chính xác bạn đang tìm kiếm.
Ví dụ: bạn muốn biết nhân viên nào giành nhiều giải "nhân viên tháng" nhất. Bạn có thể muốn sắp xếp truy vấn theo điểm dữ liệu đó để hiển thị nhân viên giành nhiều giải nhất lên đầu.
Câu lệnh SQL ORDER BY sắp xếp kết quả truy vấn tùy thuộc vào điều kiện của bạn. Trong hướng dẫn này, chúng ta sẽ thảo luận cách dùng câu lệnh ORDER BY. Chúng ta sẽ đi qua ví dụ để giúp bạn làm chủ từ khóa này.
SQL ORDER BY
Từ khóa SQL ORDER BY sắp xếp kết quả truy vấn. Bạn có thể sắp xếp kết quả theo thứ tự tăng dần (ascending) hoặc giảm dần (descending) theo một cột hoặc tập cột cụ thể.
Cú pháp truy vấn ORDER BY:
SELECT name FROM employees ORDER BY name, joined ASC;
Sau câu lệnh SQL SELECT, chỉ định tên cột muốn lấy. Sau đó chỉ định muốn lấy dữ liệu từ bảng employees.
Câu lệnh ORDER BY sắp xếp truy vấn theo cột name và joined theo thứ tự giảm dần. Cơ sở dữ liệu trước tiên sắp xếp theo tên giảm dần.
SQL mặc định sắp xếp cột theo thứ tự tăng dần. Bạn có thể sắp xếp cột tăng dần hoặc giảm dần dùng mệnh đề SQL ORDER BY.
Hai thứ tự sắp xếp có thể:
- ASC: Tăng dần (mặc định).
- DESC: Giảm dần.
Bạn có thể dùng danh sách cột để sắp xếp nhiều cột theo thứ tự khác nhau:
SELECT name FROM employees ORDER BY name ASC, joined DESC;
Truy vấn này sắp xếp bảng theo name tăng dần. Sau đó sắp xếp theo joined giảm dần.
Ví dụ ORDER BY SQL
Chạy ví dụ truy vấn minh họa toán tử ORDER BY. Muốn lấy danh sách tên tất cả nhân viên và chức danh. Mục tiêu: sắp xếp danh sách theo thứ tự bảng chữ cái theo tên nhân viên.
Để lấy dữ liệu này, dùng truy vấn:
SELECT name, title FROM employees ORDER BY name ASC;
Truy vấn sắp xếp tập kết quả. Kết quả theo thứ tự tăng dần:
| name | title |
|---|---|
| Alexis | Sales Associate |
| Geoff | Senior Sales Associate |
| Hannah | Sales Associate |
| Jonah | Vice President of Sales |
| Luke | Sales Associate |
| Mike | Sales Associate |
Nếu muốn sắp xếp theo thứ tự bảng chữ cái ngược, thay ASC bằng DESC.
Bạn cũng có thể sắp xếp theo nhiều cột. Hữu ích khi có giá trị trùng lặp trong bảng muốn sắp xếp thêm.
Ví dụ: muốn tìm ai làm việc ít thời gian nhất, theo thứ tự chức danh. Dùng truy vấn:
SELECT name, title, hired_date FROM employees ORDER BY title, hired_date DESC;
Câu lệnh ORDER BY sắp xếp kết quả truy vấn. Kết quả:
| name | title | hired_date |
|---|---|---|
| Emma | Marketing Director | 2010-03-19 |
| Alexis | Sales Associate | 2014-04-01 |
| Hannah | Sales Associate | 2011-09-30 |
| Mike | Sales Associate | 2010-03-19 |
| Luke | Sales Associate | 2009-12-03 |
| Geoff | Senior Sales Associate | 2012-03-17 |
| Jonah | Vice President of Sales | 2010-07-23 |
(7 hàng)
Như bạn thấy, bảng được sắp xếp theo cả chức danh và ngày tuyển dụng. Câu lệnh ORDER BY sắp xếp bản ghi thành công.
Sales Associate mới tuyển gần nhất là Alexis. Sales Associate làm việc lâu nhất là Luke. Chúng ta cũng thấy ngày tuyển dụng của mọi nhân viên khác, theo thứ tự chức danh.
Kết luận
Câu lệnh SQL ORDER BY thay đổi thứ tự bản ghi trả về bởi truy vấn. Bạn có thể sắp xếp truy vấn tăng dần hoặc giảm dần. Mặc định là truy vấn trả về dữ liệu theo thứ tự tăng dần.
Bạn muốn tìm hiểu thêm về SQL? Đọc hướng dẫn How to Learn SQL của chúng tôi. Bạn sẽ tìm thấy mẹo hàng đầu về cách học SQL. Chúng tôi đã chuẩn bị danh sách tài nguyên học tập giúp bạn xây dựng kỹ năng cần thiết.