Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng mệnh đề ORDER BY
trong SQL Server để sắp xếp tập kết quả của một truy vấn theo một hoặc nhiều cột.
Khi bạn sử dụng câu lệnh SELECT
để truy vấn dữ liệu từ một bảng, thứ tự các bản ghi trong tập kết quả không được đảm bảo. Điều đó có nghĩa là SQL Server có thể trả về một tập kết quả với một thứ tự không xác định.
Cách duy nhất để bạn đảm bảo rằng các bản ghi trong tập kết quả được sắp xếp là sử dụng mệnh đề ORDER BY
. Ví dụ sau đây minh họa cú pháp mệnh đề ORDER BY
:
SELECT
select_list
FROM
table_name
ORDER BY
column_name | expression [ASC | DESC]
Trong cú pháp này:
Đầu tiên, bạn chỉ định một tên cột hoặc một biểu thức để sắp xếp tập kết quả của truy vấn.
Nếu bạn chỉ định nhiều cột, tập kết quả được sắp xếp theo cột đầu tiên và sau đó tập kết quả được sắp xếp đó tiếp tục được sắp xếp theo cột thứ hai, v.v.
Các cột xuất hiện trong mệnh đề ORDER BY
phải tồn tại trong bảng được chỉ định trong mệnh đề FROM
.
Thứ hai, sử dụng ASC
hoặc DESC
để chỉ định các giá trị trong cột được chỉ định sẽ được sắp xếp theo thứ tự tăng dần hoặc giảm dần.
ASC
sắp xếp kết quả từ giá trị thấp nhất đến giá trị cao nhất (tăng dần) trong khi DESC
sắp xếp kết quả từ giá trị cao nhất đến giá trị thấp nhất (giảm dần).
Nếu bạn không chỉ định rõ ràng ASC
hoặc DESC
, SQL Server sử dụng ASC
làm thứ tự sắp xếp mặc định. Ngoài ra, SQL Server coi NULL là giá trị thấp nhất.
Khi xử lý câu lệnh SELECT
có mệnh đề ORDER BY
, mệnh đề ORDER BY
là mệnh đề được xử lý cuối cùng.
Chúng tôi sẽ sử dụng bảng customers
trong cơ sở dữ liệu mẫu để minh họa sử dụng mệnh đề ORDER BY trong SQL Server.
Câu lệnh sau sắp xếp danh sách khách hàng theo tên theo thứ tự tăng dần:
SELECT
first_name,
last_name
FROM
sales.customers
ORDER BY
first_name;
Đây là kết quả:
Trong ví dụ này, vì chúng tôi không chỉ định ASC
hay DESC
, mệnh đề ORDER BY
sẽ sử dụng ASC
theo mặc định.
Câu lệnh sau sắp xếp danh sách khách hàng theo tên theo thứ tự giảm dần.
SELECT
firstname,
lastname
FROM
sales.customers
ORDER BY
first_name DESC;
Đây là kết quả:
Trong ví dụ này, vì chúng tôi đã chỉ định DESC
rõ ràng, mệnh đề ORDER BY
đã sắp xếp kết quả theo cột first_name
theo thứ tự giảm dần.
Câu lệnh sau đây trả về tên, họ và thành phố của khách hàng. Nó sắp xếp danh sách khách hàng theo thành phố trước và sau đó theo tên.
SELECT
city,
first_name,
last_name
FROM
sales.customers
ORDER BY
city,
first_name;
Đây là kết quả:
Trong ví dụ này, vì chúng tôi không chỉ định ASC
hay DESC
, mệnh đề ORDER BY
sẽ sử dụng ASC
theo mặc định.
Câu lệnh sau sắp xếp khách hàng theo thành phố theo thứ tự giảm dần và sắp xếp theo tên theo thứ tự tăng dần.
SELECT
city,
first_name,
last_name
FROM
sales.customers
ORDER BY
city DESC,
first_name ASC;
Đây là kết quả:
Có thể sắp xếp kết quả theo một cột không xuất hiện trong danh sách kết quả trả về. Ví dụ: câu lệnh sau sắp xếp khách hàng theo trạng thái mặc dù cột state
không xuất hiện trong danh sách kết quả trả về.
SELECT
city,
first_name,
last_name
FROM
sales.customers
ORDER BY
state;
Đây là kết quả:
Lưu ý rằng cột state
phải có trong bảng customers
. Nếu không, bạn sẽ có một truy vấn không hợp lệ.
Hàm LEN()
trả về số ký tự của một chuỗi. Câu lệnh sau sử dụng hàm LEN()
trong mệnh đề ORDER BY
để lấy danh sách khách hàng được sắp xếp theo độ dài của tên.
SELECT
first_name,
last_name
FROM
sales.customers
ORDER BY
LEN(first_name) DESC;
Đây là kết quả:
SQL Server cho phép bạn sắp xếp tập kết quả dựa trên vị trí của các cột xuất hiện trong danh sách kết quả trả về.
Câu lệnh sau sắp xếp khách hàng theo tên và họ. Nhưng thay vì chỉ định rõ ràng các tên cột, nó sử dụng các vị trí của các cột:
SELECT
first_name,
last_name
FROM
sales.customers
ORDER BY
1,
2;
Trong ví dụ này, 1 có nghĩa là cột first_name
và 2 có nghĩa là cột last_name
.
Sử dụng vị trí của các cột trong mệnh đề ORDER BY
được coi là thực hành lập trình xấu vì một vài lý do.
ORDER BY
.Do đó, cách tốt nhất là luôn chỉ định rõ ràng các tên cột trongmệnh đề ORDER BY
.
Trong hướng dẫn này, bạn đã học cách sử dụng mệnh đề ORDER BY
trong SQL Server để sắp xếp tập kết quả theo các cột theo thứ tự tăng dần hoặc giảm dần.
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong hướng dẫn này, bạn sẽ tìm hiểu về GUID trong SQL Server và cách sử dụng hàm NEWID() để tạo giá trị GUID.
Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATETIMEOFFSET trong SQL Server để thao tác datetime với múi giờ.
Trong hướng dẫn này, bạn sẽ học cách lưu trữ thời gian trong ngày trong cơ sở dữ liệu bằng cách sử dụng kiểu dữ liệu TIME trong SQL Server.
Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATE trong SQL Server để lưu trữ dữ liệu ngày tháng trong một bảng.