ĐẶT HÀNG BỞI trong MySQL: Truy vấn DESC & ASC với EXAMPLE
Sắp xếp kết quả
Sử dụng lệnh SELECT, các kết quả được trả về theo thứ tự giống như 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 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ể. Việc 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 các kiểu dữ liệu số, chuỗi cũng như ngày tháng.
ORDER BY trong MySQL?
MySQL ĐẶT BỞI được sử dụng cùng với truy vấn CHỌN để sắp xếp dữ liệu một cách có trật tự. Các MySQL Mệnh đề ORDER BY đượ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];
tại ĐÂ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 Ở ĐÂU | NHÓM THEO `field_name(s)` CÓ điều kiện” 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.
- "ĐẶT BỞI" 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. Ghi chú ASC được sử dụng làm mặc định.
- CHỌN {fieldName(s) | *} TỪ (các) tên bảng 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 nhất định.
- ĐẶT BỞI (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. Các MySQL Từ khóa DESC chỉ định rằng việc sắp xếp phải theo thứ tự giảm dần.
- [GIỚI HẠN] 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.
Từ khóa DESC và ASC là gì?
ASC là dạng viết tắt của tăng dần | MySQL DESC là dạng viết tắt của 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 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 kiểu dữ liệu ngày tháng, ngày sớm nhất sẽ được hiển thị ở đầu danh sách. | . Khi làm việc với các loại ngày, ngày mới nhất sẽ được hiển thị ở đầ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 sẽ được hiển thị ở đầ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 kết quả truy vấn được sắp xếp từ những kết quả 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 kết quả truy vấn được sắp xếp từ những kết quả bắt đầu bằng chữ Z đi xuống chữ A. |
Cả hai từ khóa SQL DESC và ASC đều được sử dụng cùng nhau cùng với câu lệnh SELECT và MySQL Mệnh đề ORDER BY.
Cú pháp DESC và ASC
Từ khóa sắp xếp DESC của 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]
tại ĐÂY
Ví dụ:
Bây giờ chúng ta hãy xem một ví dụ thực tế –
SELECT * FROM members;
Thực thi đoạn script trên trong MySQL workbench so với myflixdb cung cấp cho chúng ta 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 | 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 sắp xếp thông tin chi tiết của thành viên theo thứ tự giảm dần của Ngày sinh. Điều này sẽ giúp họ gửi lời chúc mừng sinh nhật kịp thời. Chúng ta có thể lấy danh sách nói trên bằng cách thực hiện truy vấn như bên dưới –
SELECT * FROM members ORDER BY date_of_birth DESC;
Thực thi đoạn script trên trong MySQL workbench so với myflixdb cung cấp cho chúng ta kết quả như hình dưới đây.
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 ngày_sinh ASC
Lưu ý: Giá trị NULL có nghĩa là không có giá trị (không phải số 0 hoặc chuỗi trống). Hãy quan sát cách chúng được sắp xếp.
Thêm ví dụ
Hãy xem xét lệnh sắp xếp theo SQL sau đây để liệt kê tất cả các bản ghi thành viên.
SELECT * FROM `members`;
Thực hiện đoạn mã 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 | 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 ta muốn có một 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 ta sẽ sử dụng tập lệnh 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 | 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 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 ASC hoặc MySQL Từ khóa 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 một ví dụ thực hiện sắp xếp bằng hai cột; Đầu tiên là đã sắp xếp in thứ tự tăng dần theo mặc định trong khi cột thứ hai là đã sắp xếp in Thứ tự giảm dần.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Thực thi đoạn script trên trong MySQL so sánh workbench 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 một cách 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ẽ hợp lý hơn nếu in các khoản thanh toán theo thứ tự thời gian giảm dần bắt đầu từ khoản thanh toán gần đây đến khoản thanh toán trước đó?
DESC trong SQL là một từ khóa trở nên hữu ích trong những tình huống 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 theo 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ẽ hợp lý hơn nếu sắp xếp tên danh mục phim và tiêu đề tăng dần sao cho thành viên có thể tra cứu nhanh chóng thông tin từ danh sách?
Từ khóa ASC có ích trong những tình huống như vậy; chúng ta có thể sắp xếp danh sách phim theo tên danh mục và tên phim theo thứ tự tăng dần.
Tổng kết
- 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 hợ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à GIỚI HẠN
- Giá trị mặc định cho ORDER BY khi không có gì được chỉ định rõ ràng là ASC.