ORDER BY - Sắp xếp dữ liệu được lấy ra
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:
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
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,
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:
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,
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 |
1 | 10 | 9 |
2 | 15 | 4 |
3 | 25 | 3 |
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á *):
FROM Product_Sales
ORDER BY Price*Units DESC;
Kết quả:
Product_ID | Revenue |
1 | 90 |
3 | 75 |
2 | 60 |
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:
- DELETE FROM - Xóa dòng trong SQL
- UPDATE - cú pháp cập nhật dữ liệu
- INSERT INTO SELECT - Insert dữ liệu từ câu lệnh select
- INSERT INTO - cú pháp thêm dữ liệu
- SELECT UNIQUE - Select loại bỏ trùng
- SQL AS - Gán bí danh cho bảng