Nếu bạn muốn sắp xếp dữ liệu trả về theo tăng dần hoặc giảm dần thì có thể sử dụng lệnh ORDER BY, lệnh này được đặt cuối của câu truy vấn SELECT và có hai tham số truyền vào, cú pháp như sau: Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. SELECT column-list FROM table_name [WHERE condition] [ORDER BY column1, column2, .. columnN] [ASC | DESC]; Trong đó:
Nếu là số thú tự thì được sắp xếp từ 0 -> 9, còn chữ cái thì từ a -> z. Thực tế thì nó sắp xếp dựa vào số thứ tự trong bảng mã ASCII. Sắp xếp theo một columnVí dụ: Sắp xếp danh sách bài viết trả về từ bài cũ đến bài mới. Vì trong bảng POSTS có column add_date nên mình sẽ dựa vào nó để biết bài nào cũ và bài nào mới. Bài viết này được đăng tại [free tuts .net] SELECT * FROM POSTS ORDER BY ADD_DATE ASC Nếu bạn muốn sắp xếp từ ngày đăng theo mới xuống cũ thì chỉ cần đổi ASC thành DESC. SELECT * FROM POSTS ORDER BY ADD_DATE DESC Sắp xếp theo nhiều columnNếu bạn muốn sắp xếp theo nhiều column thì chỉ cần bổ sung nó vào và cách nhau bởi dấu phẩy. Ví dụ: Sắp xếp bài viết theo tiêu đề và ngày đăng theo hai cách tăng và giảm dần.
Tăng dần SELECT * FROM POSTS ORDER BY ADD_DATE, ID ASC
Giảm dần SELECT * FROM POSTS ORDER BY ADD_DATE, ID DESCTrên là cách sử dụng lệnh ORDER BY trong SQL, lệnh này rất hữu ích và được sử dụng rất thường xuyên.
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.
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.
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. 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]
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.
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. 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.
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`;
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 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.
|