Sắp xếp kết quả
Chúng tôi đã xem xét cách lấy dữ liệu từ các bảng của chúng tôi bằng lệnh SELECT. Kết quả được trả về theo cùng thứ tự các hồ sơ đã đượ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 tôi sẽ xem xét cách chúng tôi có thể sắp xếp 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 kết quả truy vấn của chúng tôi theo một cách cụ thể . Sắp xếp có thể được thực hiện trên một cộ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 loại dữ liệu ngày.
Sắp xếp theo mệnh đề
Mệnh đề theo mệnh đề đượ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. Nó được sử dụng cùng với truy vấn SELECT. Nó có cú pháp cơ bản sau.
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
ĐÂY
- "SELECT statement..." là truy vấn chọn thông thường
- "|" đại diện cho các lựa chọn thay thế
- "[WHERE condition | 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 tập 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ừ khóa DESC và ASC là gì?
ASC là dạng rút gọn để tăng dần
|
DESC là dạng rút gọn để giảm dần
|
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 với 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 với 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 loại 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 loại 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 kết quả truy vấn được sắp xếp từ các kiểu bắt đầu bằng chữ A đi lên chữ Z.
|
Khi làm việc với các kiểu dữ liệu chuỗi, tập kết quả truy vấn được sắp xếp từ các kiểu bắt đầu bằng chữ Z đi xuống chữ A.
|
Cả hai từ khóa DESC và ASC đều được sử dụng cùng với câu lệnh SELECT và mệnh đề ORDER BY.
Cú pháp DESC và ASC
Từ khóa sắp xếp DESC 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
- SELECT {fieldName(s) | *} FROM tableName(s) là câu lệnh chứa các trường và bảng (từ đó) để lấy kết quả được đặt từ đó.
- [WHERE condition] 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 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 DESC chỉ định rằng việc sắp xếp sẽ 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ả được trả về từ tập kết quả truy vấn.
Ví dụ:
Bây giờ chúng ta hãy xem một ví dụ thực tế -
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta các 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 | email |
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm
|
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 các chi tiết 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 tôi có thể nhận được 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;
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta các kết quả sau được hiển thị bên dưới.
Truy vấn tương tự theo thứ tự tăng dần
CHỌN * TỪ các 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ị (không phải chuỗi 0 hoặc chuỗi rỗng). Quan sát cách chúng đã được sắp xếp.
Thêm ví dụ
Hãy xem xét các kịch bản sau đây liệt kê tất cả các hồ sơ thành viên.
SELECT * FROM `members`;
Thực hiện đoạn script trên cho kết quả như sau.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | email |
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 tôi muốn nhận danh sách sắp xếp tập kết quả truy vấn bằng trường giới tính, chúng tôi 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 | email |
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
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 | rm@tstreet.com |
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 bởi các thành viên "Nam", điều này là do khi mệnh đề theo thứ tự được sử dụng mà không chỉ định từ khóa ASC hoặc DESC, theo mặc định, MySQL đã sắp xếp kết quả truy vấn theo thứ tự tăng dần.
Bây giờ chúng ta hãy xem một ví dụ thực hiện phân loại bằ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;
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với myflixdb cho kết quả như 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 rõ ràng
Tại sao chúng ta có thể sử dụng DESC và ASC?
Giả sử chúng tôi muốn in lịch sử thanh toán cho 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ẽ không 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 bằng khoản thanh toán gần đây cho khoản thanh toán trước đó?
Từ khóa DESC có ích trong các tình huống như vậy. Chúng tôi có thể viết một truy vấn sắp xếp danh sách theo thứ tự giảm dần bằng cách sử dụng ngày thanh toán.
Giả sử bộ phận tiếp thị muốn có một danh sách các bộ phim theo thể loại mà các thành viên có thể sử dụng để quyết định những bộ phim nào có sẵn trong thư viện khi thuê phim, sẽ không hợp lý hơn nếu nhìn sắp xếp tên và tiêu đề của bộ phim theo thứ tự tăng dần để 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 các tình huống như vậy; chúng ta có thể lấy danh sách phim được sắp xếp theo tên danh mục và tiêu đề 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ừ kết quả truy vấn được đặt theo thứ tự tăng dần hoặc giảm dần.
- Từ khóa DESC được sử dụng để sắp xếp kết quả truy vấn được sắp xếp theo thứ tự giảm dần.
- Từ khóa ASC được sử dụng để sắp xếp kết quả truy vấn được đặt 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à GIỚI HẠN
- Mặc định cho ORDER BY khi không có gì được chỉ định rõ ràng là ASC.
إرسال تعليق