Sắp xếp kết quả
Sử dụng lệnh SELECT, kết quả được trả về theo thứ tự các bản ghi được thêm vào cơ sở dữ liệu. Đây là thứ tự sắp xếp mặc định. Trong phần này, chúng ta sẽ xem xét cách chúng ta có thể sắp xếp các kết quả truy vấn của mình. Sắp xếp chỉ đơn giản là sắp xếp lại các kết quả truy vấn của chúng tôi theo một cách cụ thể. Việc sắp xếp có thể được thực hiện trên một cột duy nhất hoặc trên nhiều cột. Nó có thể được thực hiện trên số, chuỗi cũng như các kiểu dữ liệu ngày tháng.
ORDER BY trong MySQL là gì?
MySQL ORDER BY được sử dụng cùng với truy vấn SELECT để sắp xếp dữ liệu một cách có trật tự. Mệnh đề ORDER BY trong MySQL được sử dụng để sắp xếp các tập kết quả truy vấn theo thứ tự tăng dần hoặc giảm dần.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
ĐÂY
- "Câu lệnh SELECT…" là truy vấn chọn thông thường
- "|" đại diện cho các lựa chọn thay thế
- "[Điều kiện WHERE | GROUP BY` field_name (s) `HAVING condition" là điều kiện tùy chọn được sử dụng để lọc các tập kết quả truy vấn.
- "ORDER BY" thực hiện sắp xếp nhóm kết quả truy vấn
- "[ASC | DESC]" là từ khóa được sử dụng để sắp xếp các tập kết quả theo thứ tự tăng dần hoặc giảm dần. Lưu ý ASC được sử dụng làm mặc định.
Từ khoá DESC và ASC là gì?
|
|
Nó được sử dụng để sắp xếp các kết quả truy vấn theo kiểu từ trên xuống dưới. |
Nó được sử dụng để sắp xếp các kết quả truy vấn theo kiểu từ dưới lên trên |
Khi làm việc trên các loại dữ liệu ngày, ngày sớm nhất được hiển thị trên đầu danh sách. |
. Khi làm việc trên các loại ngày, ngày mới nhất được hiển thị trên đầu danh sách. |
Khi làm việc với các kiểu dữ liệu số, các giá trị thấp nhất được hiển thị trên đầu danh sách. |
Khi làm việc với các kiểu dữ liệu số, các giá trị cao nhất được hiển thị ở đầu tập kết quả truy vấn. |
Khi làm việc với các kiểu dữ liệu chuỗi, tập hợp kết quả truy vấn được sắp xếp từ những tập hợp bắt đầu bằng chữ A cho đến chữ Z. |
Khi làm việc với các kiểu dữ liệu chuỗi, tập hợp kết quả truy vấn được sắp xếp từ những tập hợp bắt đầu bằng ký tự Z đến ký tự A. |
Cả từ khóa SQL DESC và ASC đều được sử dụng cùng với câu lệnh SELECT và mệnh đề ORDER BY của MySQL.
Cú pháp DESC và ASC
Từ khóa sắp xếp DESC trong SQL có cú pháp cơ bản sau.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
ĐÂY
- CHỌN {fieldName (s) | *} FROM tableName (s) là câu lệnh chứa các trường và (các) bảng để lấy tập kết quả từ đó.
- [Điều kiện WHERE] là tùy chọn nhưng có thể được sử dụng để lọc dữ liệu theo điều kiện đã cho.
- ORDER BY (các) tên trường là bắt buộc và là trường mà việc sắp xếp sẽ được thực hiện. Từ khóa MySQL DESC chỉ định rằng việc sắp xếp phải theo thứ tự giảm dần.
- [LIMIT] là tùy chọn nhưng có thể được sử dụng để giới hạn số lượng kết quả trả về từ tập kết quả truy vấn.
Ví dụ:
Bây giờ chúng ta hãy xem xét một ví dụ thực tế -
SELECT * FROM members;
Thực thi tập lệnh trên trong MySQL workbench so với myflixdb cho chúng ta kết quả sau được hiển thị bên dưới.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
Giả sử bộ phận tiếp thị muốn thông tin chi tiết của các thành viên được sắp xếp theo thứ tự ngày sinh giảm dần. Điều này sẽ giúp họ gửi lời chúc mừng sinh nhật một cách kịp thời. Chúng ta có thể lấy danh sách đã nói bằng cách thực hiện một truy vấn như dưới đây:
SELECT * FROM members ORDER BY date_of_birth DESC;
Thực thi tập lệnh trên trong MySQL workbench so với myflixdb cho chúng ta kết quả sau được hiển thị bên dưới.
Cùng một truy vấn theo thứ tự tăng dần
CHỌN * TỪ thành viên ĐẶT HÀNG THEO date_of_birth ASC
Lưu ý: Giá trị NULL có nghĩa là không có giá trị nào (không phải số không hoặc chuỗi rỗng). Quan sát cách chúng được sắp xếp.
Các ví dụ khác
Hãy xem xét kịch bản sau đây liệt kê tất cả các bản ghi thành viên.
SELECT * FROM `members`;
Việc thực thi script trên sẽ cho kết quả như hình dưới đây.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Giả sử chúng ta muốn nhận một danh sách sắp xếp tập hợp kết quả truy vấn bằng cách sử dụng trường giới tính, chúng ta sẽ sử dụng tập lệnh được hiển thị bên dưới.
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Các thành viên "Nữ" được hiển thị đầu tiên, theo sau là các thành viên "Nam", điều này là do khi mệnh đề ORDER BY DESC được sử dụng mà không chỉ định từ khóa ASC hoặc MySQL DESC, theo mặc định, MySQL đã sắp xếp tập kết quả truy vấn theo thứ tự tăng dần.
Bây giờ chúng ta hãy xem xét một ví dụ thực hiện việc sắp xếp bằng cách sử dụng hai cột ; người đầu tiên được sắp xếp trong thứ tự tăng dần theo mặc định trong khi cột thứ hai được sắp xếp trong thứ tự giảm dần.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Thực thi tập lệnh trên trong MySQL workbench với myflixdb sẽ cho kết quả sau.
Cột giới tính được sắp xếp theo thứ tự tăng dần theo mặc định trong khi cột ngày sinh được sắp xếp theo thứ tự giảm dần một cách rõ ràng
Tại sao chúng tôi có thể sử dụng DESC và ASC?
Giả sử chúng ta muốn in lịch sử thanh toán cho một thành viên thư viện video để giúp trả lời các truy vấn từ quầy lễ tân, sẽ hợp lý hơn nếu các khoản thanh toán được in theo thứ tự thời gian giảm dần bắt đầu từ lần thanh toán gần đây đến lần thanh toán trước đó?
DESC trong SQL là một từ khóa trở nên hữu dụng trong những trường hợp như vậy. Chúng ta có thể viết một truy vấn sắp xếp danh sách theo thứ tự giảm dần sử dụng ngày thanh toán.
Giả sử bộ phận tiếp thị muốn lấy danh sách phim theo thể loại mà các thành viên có thể sử dụng để quyết định phim nào có trong thư viện khi thuê phim, sẽ không hợp lý hơn nếu bạn sắp xếp tên danh mục phim và tiêu đề theo thứ tự tăng dần sao cho các thành viên có thể nhanh chóng tra cứu thông tin từ danh sách?
Từ khóa ASC có ích trong những trường hợp như vậy; chúng ta có thể lấy danh sách phim được sắp xếp theo tên thể loại và tên phim theo thứ tự tăng dần.
Tóm lược
- Sắp xếp kết quả truy vấn là sắp xếp lại các hàng được trả về từ tập kết quả truy vấn theo thứ tự tăng dần hoặc giảm dần.
- Từ khóa DESC trong SQL, được sử dụng để sắp xếp tập kết quả truy vấn theo thứ tự giảm dần.
- Từ khóa ASC được sử dụng để sắp xếp tập kết quả truy vấn theo thứ tự tăng dần.
- Cả DESC và ASC đều hoạt động cùng với từ khóa ORDER BY. Chúng cũng có thể được sử dụng kết hợp với các từ khóa khác như mệnh đề WHERE và LIMIT
- Mặc định cho ORDER BY khi không có gì được chỉ định rõ ràng là ASC.