ORDER BY - Sắp xếp dữ liệu được lấy ra

2022-11-02 13:52:00

Lệnh ORDER BY trong SQL sắp xếp tập hợp kết quả theo thứ tự tăng dần hoặc giảm dần. ORDER BY thường xuất hiện cuối cùng trong câu lệnh SQL vì nó được thực hiện sau khi tập hợp kết quả đã được truy xuất.

Syntax

Cú pháp cho câu lệnh ORDER BY như sau:

SELECT "column_name"
FROM "table_name"
[WHERE "condition"]
ORDER BY "column_name" [ASC, DESC];

[] Có nghĩa là câu lệnh WHERE là tùy chọn. Tuy nhiên, nếu mệnh đề WHERE tồn tại, nó sẽ đứng trước mệnh đề ORDER BY . ASC có nghĩa là kết quả sẽ được hiển thị theo thứ tự tăng dần và DESC có nghĩa là kết quả sẽ được hiển thị theo thứ tự giảm dần. Nếu cả hai đều không được chỉ định, mặc định là ASC.

Có thể sắp xếp theo nhiều hơn một cột. Đối với trường hợp chúng ta sắp xếp theo hai cột, mệnh đề ORDER BY ở trên sẽ trở thành

ORDER BY "column_name1" [ASC, DESC], "column_name2" [ASC, DESC]

Giả sử rằng chúng ta chọn thứ tự tăng dần cho cả hai cột, đầu ra sẽ được sắp xếp theo thứ tự tăng dần theo cột 1. Nếu có sự ràng buộc cho giá trị của cột 1, thì chúng ta sắp xếp theo thứ tự tăng dần theo cột 2.

Không có giới hạn về số lượng cột bạn có thể sử dụng trong mệnh đề ORDER BY . Tuy nhiên, nguyên tắc chung là bạn chỉ nên bao gồm các cột cần thiết cho trường hợp sử dụng của mình.

Các ví dụ

Chúng tôi sử dụng bảng sau cho các ví dụ 1-3.

Table Store_Information

 Store_Name  Sales  Txn_Date 
 Los Angeles  1500  Jan-05-1999 
 San Diego  250  Jan-07-1999 
 San Francisco  300  Jan-08-1999 
 Boston  700  Jan-08-1999 

Ví dụ 1: ĐẶT HÀNG THEO một cột duy nhất sử dụng tên cột

Để liệt kê nội dung của Table Store_Information by Sales theo thứ tự giảm dần, chúng tôi nhập,

SELECT Store_Name, Sales, Txn_Date
FROM Store_Information
ORDER BY Sales DESC;

Kết quả:

Store_Name Sales Txn_Date
Los Angeles 1500 Jan-05-1999
Boston 700 Jan-08-1999
San Francisco 300 Jan-08-1999
San Diego 250 Jan-07-1999

Ví dụ 2: ĐẶT HÀNG THEO một cột duy nhất sử dụng vị trí cột

Ngoài tên cột, chúng tôi cũng có thể sử dụng vị trí cột (dựa trên truy vấn SQL) để cho biết cột nào chúng tôi muốn áp dụng mệnh đề ORDER BY . Cột đầu tiên là 1, cột thứ hai là 2, v.v. Trong ví dụ trên, chúng ta sẽ đạt được kết quả tương tự bằng lệnh sau:

SELECT Store_Name, Sales, Txn_Date
FROM Store_Information
ORDER BY 2 DESC;

Ví dụ 3: ĐẶT HÀNG THEO một cột duy nhất sử dụng một cột không có trong câu lệnh SELECT

(Các) cột chúng tôi sử dụng để sắp xếp kết quả không cần phải nằm trong mệnh đề SELECT . Ví dụ: SQL sau,

SELECT Store_Name
FROM Store_Information
ORDER BY Sales DESC;

hoạt động tốt và sẽ cho kết quả sau:

Store_Name
Los Angeles
Boston
San Francisco
San Diego

Ví dụ 4: ĐẶT HÀNG BẰNG một biểu thức

Cũng có thể sắp xếp kết quả theo một biểu thức. Ví dụ, trong bảng sau,

Bảng Product_Sales

 Product_ID  Price  Units 
1109
2154
3253

chúng ta có thể sử dụng câu lệnh SQL bên dưới để sắp xếp kết quả theo Doanh thu (được định nghĩa là Đơn vị giá *):

SELECT Product_ID, Price*Units Revenue
FROM Product_Sales
ORDER BY Price*Units DESC;

Kết quả:

Product_ID Revenue
190
375
260

Bài tập

Đối với các bài tập này, giả sử chúng ta có một bảng có tên là User_Sales với dữ liệu sau:

Bảng User_Sales

 First_Name  Last_Name  Gender  Join_Date  Sales 
 Sophie  Lee  F  Apr-05-2015  500 
 Richard  Brown  M  Apr-05-2015  200 
 Jamal  Santo  M  Apr-09-2015  350 
 Casey  Healy  M  Apr-09-2015  80 
 Jill  Wilkes  F  Apr-15-2015  210 

1. Câu lệnh SQL nào sau đây là hợp lệ? (Có thể có nhiều hơn một câu trả lời)
a) SELECT * FROM User_Sales ORDER BY Sales;
b) SELECT * FROM User_Sales ORDER BY Last_Name DESC;
c) SELECT * FROM User_Sales ORDER BY First_Name WHERE Sales > 100;
d) SELECT * FROM User_Sales ORDER BY Last_Name, First_Name;

2. What is the result of the following query?
SELECT * FROM User_Sales WHERE Join_Date IN ('Apr-05-2015','Apr-15-2015') ORDER BY Sales;

3. Kết quả của truy vấn sau là gì?
SELECT * FROM User_Sales ORDER BY Join_Date DESC, Sales;



Xem thêm:


Chia sẻ: