Bất cứ khi nào chúng ta muốn sắp xếp các bản ghi dựa trên các cột được lưu trữ trong các bảng của cơ sở dữ liệu SQL, thì chúng ta sẽ cân nhắc sử dụng mệnh đề ORDER BY trong SQL.
Mệnh đề ORDER BY trong SQL sẽ giúp chúng ta sắp xếp các record dựa trên cột cụ thể của bảng. Điều này có nghĩa là tất cả các giá trị được lưu trữ trong cột mà chúng ta đang áp dụng mệnh đề ORDER BY sẽ được sắp xếp và các giá trị cột tương ứng sẽ được hiển thị theo trình tự mà chúng ta đã lấy được các giá trị trong bước trước đó.
Sử dụng mệnh đề ORDER BY, chúng tôi có thể sắp xếp các bản ghi theo thứ tự tăng dần hoặc giảm dần tùy theo yêu cầu của chúng tôi. Các bản ghi sẽ được sắp xếp theo thứ tự tăng dần bất cứ khi nào từ khóa ASC được sử dụng với mệnh đề ORDER by. Từ khóa DESC sẽ sắp xếp các bản ghi theo thứ tự giảm dần.
Nếu không có từ khóa nào được chỉ định sau cột mà chúng ta phải sắp xếp các bản ghi, trong trường hợp đó, việc sắp xếp sẽ được thực hiện theo mặc định theo thứ tự tăng dần.
Các bài viết liên quan:
Trước khi viết các truy vấn để sắp xếp các bản ghi, chúng ta hãy hiểu cú pháp.
Cú pháp để sắp xếp các bản ghi theo thứ tự tăng dần:
Cú pháp sắp xếp các bản ghi theo thứ tự giảm dần:
Cú pháp sắp xếp các bản ghi theo thứ tự tăng dần mà không sử dụng từ khóa ASC:
Hãy để chúng tôi khám phá thêm về chủ đề này với sự trợ giúp của các ví dụ. Chúng tôi sẽ sử dụng cơ sở dữ liệu MySQL để viết các truy vấn trong các ví dụ.
Hãy xem xét chúng tôi có bảng khách hàng với các bản ghi sau:
ID | NAME | AGE | ADDRESS | SALARY |
2 | Shiva Tiwari | 22 | Bhopal | 21000 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
4 | Ritesh Yadav | 36 | Azamgarh | 26000 |
5 | Balwant Singh | 45 | Varanasi | 36000 |
6 | Mahesh Sharma | 26 | Mathura | 22000 |
7 | Rohit Shrivastav | 19 | Ahemdabad | 38000 |
8 | Neeru Sharma | 29 | Pune | 40000 |
9 | Aakash Yadav | 32 | Mumbai | 43500 |
10 | Sahil Sheikh | 35 | Aurangabad | 68800 |
Ví dụ 1:
Viết truy vấn để sắp xếp các bản ghi theo thứ tự tăng dần của tên khách hàng được lưu trong bảng khách hàng.
Truy vấn:
Ở đây trong một truy vấn CHỌN, một mệnh đề ORDER BY được áp dụng trên cột ‘Tên’ để sắp xếp các bản ghi. Từ khóa ASC sẽ sắp xếp các bản ghi theo thứ tự tăng dần.
Bạn sẽ nhận được kết quả sau:
ID | NAME | AGE | ADDRESS | SALARY |
9 | Aakash Yadav | 32 | Mumbai | 43500 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
5 | Balwant Singh | 45 | Varanasi | 36000 |
1 | Himani Gupta | 21 | Modinagar | 22000 |
6 | Mahesh Sharma | 26 | Mathura | 22000 |
8 | Neeru Sharma | 29 | Pune | 40000 |
4 | Ritesh Yadav | 36 | Azamgarh | 26000 |
7 | Rohit Shrivastav | 19 | Ahemdabad | 38000 |
10 | Sahil Sheikh | 35 | Aurangabad | 68800 |
2 | Shiva Tiwari | 22 | Bhopal | 21000 |
Tất cả các bản ghi có trong bảng khách hàng được hiển thị theo thứ tự tăng dần của tên khách hàng.
Xem thêm GROUP BY so với ORDER BY
Ví dụ 2:
Viết truy vấn để sắp xếp các bản ghi theo thứ tự tăng dần của các địa chỉ được lưu trữ trong bảng khách hàng.
Truy vấn:
Ở đây trong một truy vấn CHỌN, một mệnh đề ORDER BY được áp dụng cho cột ‘Địa chỉ’ để sắp xếp các bản ghi. Không có từ khóa nào được sử dụng sau mệnh đề ORDER BY. Do đó, các bản ghi, theo mặc định, sẽ được sắp xếp theo thứ tự tăng dần.
Bạn sẽ nhận được kết quả sau:
ID | NAME | AGE | ADDRESS | SALARY |
7 | Rohit Shrivastav | 19 | Ahemdabad | 38000 |
10 | Sahil Sheikh | 35 | Aurangabad | 68800 |
4 | Ritesh Yadav | 36 | Azamgarh | 26000 |
2 | Shiva Tiwari | 22 | Bhopal | 21000 |
6 | Mahesh Sharma | 26 | Mathura | 22000 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
1 | Himani Gupta | 21 | Modinagar | 22000 |
9 | Aakash Yadav | 32 | Mumbai | 43500 |
8 | Neeru Sharma | 29 | Pune | 40000 |
5 | Balwant Singh | 45 | Varanasi | 36000 |
Tất cả các bản ghi có trong bảng khách hàng được hiển thị theo thứ tự tăng dần của địa chỉ của khách hàng.
Ví dụ 3:
Viết truy vấn để sắp xếp các bản ghi theo thứ tự giảm dần của lương khách hàng được lưu trong bảng khách hàng.
Truy vấn:
Ở đây trong một truy vấn CHỌN, một mệnh đề ORDER BY được áp dụng trên cột? Lương? để sắp xếp các bản ghi. Từ khóa DESC sẽ sắp xếp các bản ghi theo thứ tự giảm dần.
Bạn sẽ nhận được kết quả sau:
ID | NAME | AGE | ADDRESS | SALARY |
10 | Sahil Sheikh | 35 | Aurangabad | 68800 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
9 | Aakash Yadav | 32 | Mumbai | 43500 |
8 | Neeru Sharma | 29 | Pune | 40000 |
7 | Rohit Shrivastav | 19 | Ahemdabad | 38000 |
5 | Balwant Singh | 45 | Varanasi | 36000 |
4 | Ritesh Yadav | 36 | Azamgarh | 26000 |
6 | Mahesh Sharma | 26 | Mathura | 22000 |
1 | Himani Gupta | 21 | Modinagar | 22000 |
2 | Shiva Tiwari | 22 | Bhopal | 21000 |
Tất cả các bản ghi có trong bảng khách hàng được hiển thị theo thứ tự giảm dần mức lương của khách hàng.
Ví dụ 4:
Viết truy vấn để sắp xếp các bản ghi theo thứ tự giảm dần của độ tuổi khách hàng được lưu trữ trong bảng khách hàng.
Truy vấn:
Ở đây trong một truy vấn CHỌN, một mệnh đề ORDER BY được áp dụng trên cột ‘Tuổi’ để sắp xếp các bản ghi. Từ khóa DESC sẽ sắp xếp các bản ghi theo thứ tự giảm dần.
Bạn sẽ nhận được kết quả sau:
ID | NAME | AGE | ADDRESS | SALARY |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
5 | Balwant Singh | 45 | Varanasi | 36000 |
4 | Ritesh Yadav | 36 | Azamgarh | 26000 |
10 | Sahil Sheikh | 35 | Aurangabad | 68800 |
9 | Aakash Yadav | 32 | Mumbai | 43500 |
8 | Neeru Sharma | 29 | Pune | 40000 |
6 | Mahesh Sharma | 26 | Mathura | 22000 |
2 | Shiva Tiwari | 22 | Bhopal | 21000 |
1 | Himani Gupta | 21 | Modinagar | 22000 |
7 | Rohit Shrivastav | 19 | Ahemdabad | 38000 |
Tất cả các bản ghi có trong bảng khách hàng được hiển thị theo thứ tự giảm dần độ tuổi của khách hàng.
Xem thêm Chuyển đổi chuỗi thành Int Swift
Hãy xem xét chúng ta có một bảng khác có tên là các tác nhân với các bản ghi sau:
AID | Name | WorkArea | Profit_Percent | ContactNumber | Salary |
1 | Gurpreet Singh | Bangalore | 1 | 9989675432 | 43000 |
2 | Sakshi Kumari | Chennai | 5 | 8190567342 | 25000 |
3 | Prachi Desai | Mumbai | 2 | 9056123432 | 60000 |
4 | Shivani More | Pune | 3 | 8894236789 | 35500 |
5 | Pallavi Singh | Delhi | 4 | 7798092341 | 38700 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
7 | Shweta Dixit | Chandigarh | 6 | 8898786453 | 31670 |
8 | Sonakshi Tiwari | Udaipur | 2 | 9809453421 | 25050 |
9 | Anushka Tripathi | Ujjain | 9 | 8909124326 | 38000 |
10 | Devika Sharma | Goa | 7 | 7864523145 | 44050 |
Ví dụ 1:
Viết truy vấn để sắp xếp các bản ghi theo thứ tự tăng dần của tên tác nhân được lưu trữ trong bảng tác nhân.
Truy vấn:
Ở đây trong một truy vấn CHỌN, một mệnh đề ORDER BY được áp dụng trên cột ‘Tên’ để sắp xếp các bản ghi. Từ khóa ASC sẽ sắp xếp các bản ghi theo thứ tự tăng dần.
Bạn sẽ nhận được kết quả sau:
AID | Name | WorkArea | Profit_Percent | ContactNumber | Salary |
9 | Anushka Tripathi | Ujjain | 9 | 8909124326 | 38000 |
10 | Devika Sharma | Goa | 7 | 7864523145 | 44050 |
1 | Gurpreet Singh | Bangalore | 1 | 9989675432 | 43000 |
5 | Pallavi Singh | Delhi | 4 | 7798092341 | 38700 |
3 | Prachi Desai | Mumbai | 2 | 9056123432 | 60000 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
2 | Sakshi Kumari | Chennai | 5 | 8190567342 | 25000 |
4 | Shivani More | Pune | 3 | 8894236789 | 35500 |
7 | Shweta Dixit | Chandigarh | 6 | 8898786453 | 31670 |
8 | Sonakshi Tiwari | Udaipur | 2 | 9809453421 | 25050 |
Tất cả các bản ghi có trong bảng đại lý được hiển thị theo thứ tự tăng dần của tên đại lý.
Ví dụ 2:
Viết truy vấn để sắp xếp các bản ghi theo thứ tự giảm dần của vùng làm việc được lưu trữ trong bảng tác nhân.
Truy vấn:
Ở đây trong một truy vấn CHỌN, một mệnh đề ORDER BY được áp dụng trên cột ‘WorkArea’ để sắp xếp các bản ghi. Từ khóa DESC sẽ sắp xếp các bản ghi theo thứ tự giảm dần.
Bạn sẽ nhận được kết quả sau:
AID | Name | WorkArea | Profit_Percent | ContactNumber | Salary |
9 | Anushka Tripathi | Ujjain | 9 | 8909124326 | 38000 |
8 | Sonakshi Tiwari | Udaipur | 2 | 9809453421 | 25050 |
4 | Shivani More | Pune | 3 | 8894236789 | 35500 |
3 | Prachi Desai | Mumbai | 2 | 9056123432 | 60000 |
10 | Devika Sharma | Goa | 7 | 7864523145 | 44050 |
5 | Pallavi Singh | Delhi | 4 | 7798092341 | 38700 |
2 | Sakshi Kumari | Chennai | 5 | 8190567342 | 25000 |
7 | Shweta Dixit | Chandigarh | 6 | 8898786453 | 31670 |
1 | Gurpreet Singh | Bangalore | 1 | 9989675432 | 43000 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
Tất cả các bản ghi có trong bảng đại lý được hiển thị theo thứ tự giảm dần của khu vực làm việc của khách hàng.
Ví dụ 3:
Viết truy vấn để sắp xếp các bản ghi theo thứ tự tăng dần của lương đại lý được lưu trong bảng đại lý.
Truy vấn:
Ở đây trong một truy vấn CHỌN, mệnh đề ORDER BY được áp dụng trên cột ‘Lương’ để sắp xếp các bản ghi. Không có từ khóa nào được sử dụng sau mệnh đề ORDER BY. Do đó, các bản ghi, theo mặc định, sẽ được sắp xếp theo thứ tự tăng dần.
Bạn sẽ nhận được kết quả sau:
AID | Name | WorkArea | Profit_Percent | ContactNumber | Salary |
2 | Sakshi Kumari | Chennai | 5 | 8190567342 | 25000 |
8 | Sonakshi Tiwari | Udaipur | 2 | 9809453421 | 25050 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
7 | Shweta Dixit | Chandigarh | 6 | 8898786453 | 31670 |
4 | Shivani More | Pune | 3 | 8894236789 | 35500 |
9 | Anushka Tripathi | Ujjain | 9 | 8909124326 | 38000 |
5 | Pallavi Singh | Delhi | 4 | 7798092341 | 38700 |
1 | Gurpreet Singh | Bangalore | 1 | 9989675432 | 43000 |
10 | Devika Sharma | Goa | 7 | 7864523145 | 44050 |
3 | Prachi Desai | Mumbai | 2 | 9056123432 | 60000 |
Tất cả các bản ghi có trong bảng đại lý được hiển thị theo thứ tự tăng dần về mức lương của khách hàng.
Ví dụ 4:
Viết truy vấn để sắp xếp các bản ghi theo thứ tự giảm dần của lương đại lý được lưu trong bảng đại lý.
Truy vấn:
Ở đây trong một truy vấn CHỌN, mệnh đề ORDER BY được áp dụng trên cột ‘Lương’ để sắp xếp các bản ghi. Từ khóa DESC sẽ sắp xếp các bản ghi theo thứ tự giảm dần.
Bạn sẽ nhận được kết quả sau:
AID | Name | WorkArea | Profit_Percent | ContactNumber | Salary |
3 | Prachi Desai | Mumbai | 2 | 9056123432 | 60000 |
10 | Devika Sharma | Goa | 7 | 7864523145 | 44050 |
1 | Gurpreet Singh | Bangalore | 1 | 9989675432 | 43000 |
5 | Pallavi Singh | Delhi | 4 | 7798092341 | 38700 |
9 | Anushka Tripathi | Ujjain | 9 | 8909124326 | 38000 |
4 | Shivani More | Pune | 3 | 8894236789 | 35500 |
7 | Shweta Dixit | Chandigarh | 6 | 8898786453 | 31670 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
8 | Sonakshi Tiwari | Udaipur | 2 | 9809453421 | 25050 |
2 | Sakshi Kumari | Chennai | 5 | 8190567342 | 25000 |
Tất cả các bản ghi có trong bảng đại lý được hiển thị theo thứ tự giảm dần của địa chỉ của khách hàng.
Mệnh đề ORDER BY với điều chỉnh thứ tự
Mệnh đề ORDER BY trong SQL với thứ tự tăng dần
Câu lệnh này được sử dụng để sắp xếp dữ liệu theo thứ tự tăng dần. Nếu bạn bỏ lỡ thuộc tính ASC, truy vấn SQL ORDER BY có thứ tự tăng dần theo mặc định.
Hãy lấy một ví dụ về nhà cung cấp
Hãy để chúng tôi lấy một bảng KHÁCH HÀNG có các bản ghi sau:
ID | NAME | AGE | ADDRESS | SALARY |
1 | Himani gupta | 21 | Modinagar | 22000 |
2 | Shiva tiwari | 22 | Bhopal | 21000 |
3 | Ajeet bhargav | 45 | Meerut | 65000 |
4 | Ritesh yadav | 36 | Azamgarh | 26000 |
5 | Balwant singh | 45 | Varanasi | 36000 |
6 | Mahesh sharma | 26 | Mathura | 22000 |
Đây là một ví dụ để sắp xếp kết quả theo thứ tự tăng dần theo TÊN và LƯƠNG.
Điều này sẽ tạo ra kết quả sau.
ID | NAME | AGE | ADDRESS | SALARY |
3 | Ajeet bhargav | 45 | Meerut | 65000 |
5 | Balwant singh | 45 | Varanasi | 36000 |
1 | Himani gupta | 21 | Modinagar | 22000 |
6 | Mahesh sharma | 26 | Mathura | 22000 |
4 | Ritesh yadav | 36 | Azamgarh | 26000 |
2 | Shiva tiwari | 22 | Bhopal | 21000 |
Mệnh đề ORDER BY trong SQL với thứ tự giảm dần
Câu lệnh này dùng để sắp xếp dữ liệu theo thứ tự giảm dần. Bạn nên sử dụng thuộc tính DESC trong mệnh đề ORDER BY của mình như sau.
ID | NAME | AGE | ADDRESS | SALARY |
1 | Himani gupta | 21 | Modinagar | 22000 |
2 | Shiva tiwari | 22 | Bhopal | 21000 |
3 | Ajeet bhargav | 45 | Meerut | 65000 |
4 | Ritesh yadav | 36 | Azamgarh | 26000 |
5 | Balwant singh | 45 | Varanasi | 36000 |
6 | Mahesh sharma | 26 | Mathura | 22000 |
Đây là một ví dụ để sắp xếp kết quả theo thứ tự giảm dần của NAME.
Điều này sẽ tạo ra kết quả sau.
ID | NAME | AGE | ADDRESS | SALARY |
2 | Shiva tiwari | 22 | Bhopal | 21000 |
4 | Ritesh yadav | 36 | Azamgarh | 26000 |
6 | Mahesh sharma | 26 | Mathura | 22000 |
1 | Himani gupta | 21 | Modinagar | 22000 |
5 | Balwant singh | 45 | Varanasi | 36000 |
3 | Ajeet bhargav | 45 | Meerut | 65000 |
Mệnh đề ORDER BY với random
Nếu bạn muốn bản ghi kết quả được sắp xếp ngẫu nhiên, bạn nên sử dụng các mã sau theo một số cơ sở dữ liệu.
Đây là một câu hỏi: cần tìm nạp một bản ghi hoặc một hàng ngẫu nhiên từ cơ sở dữ liệu là gì?
Đôi khi bạn có thể muốn hiển thị thông tin ngẫu nhiên như bài báo, liên kết, trang, v.v., cho người dùng của mình.
Nếu bạn muốn tìm nạp các hàng ngẫu nhiên từ bất kỳ cơ sở dữ liệu nào, bạn phải sử dụng một số truy vấn đã thay đổi theo cơ sở dữ liệu.
Chọn một hàng ngẫu nhiên với MySQL:
Nếu bạn muốn trả về một hàng ngẫu nhiên với MY SQL, hãy sử dụng cú pháp sau:
Chọn một hàng ngẫu nhiên với Postgre SQL:
Chọn một hàng ngẫu nhiên với SQL Server:
Chọn một hàng ngẫu nhiên với oracle:
Chọn một hàng ngẫu nhiên với IBM DB2:
Để hiểu khái niệm này một cách thực tế, chúng ta hãy xem một số ví dụ sử dụng cơ sở dữ liệu MySQL. Hãy xem xét chúng ta có một mục bảng được tạo trong cơ sở dữ liệu với dữ liệu sau:
Bảng: item
ID | Item_Name | Item_Quantity | Item_Price | Purchase_Date |
1 | Soap | 5 | 200 2021-07-08 | |
2 | Toothpaste | 2 | 80 | 2021-07-10 |
3 | Pen | 10 | 50 | 2021-07-12 |
4 | Bottle | 1 | 250 | 2021-07-13 |
5 | Brush | 3 | 90 | 2021-07-15 |
Giả sử chúng ta muốn lấy bất kỳ bản ghi ngẫu nhiên nào từ bảng các mục.
Chúng tôi sẽ viết câu truy vấn như sau:
Chúng tôi có thể nhận được các kết quả sau:
ID | Item_Name | Item_Quantity | Item_Price | Purchase_Date |
3 | Pen | 10 | 20 | 2021-07-12 |
Bây giờ chúng ta hãy thử thực hiện cùng một truy vấn một lần nữa.
Chúng tôi có thể nhận được các kết quả sau:
ID | Item_Name | Item_Quantity | Item_Price | Purchase_Date |
5 | Brush | 3 | 90 | 2021-07-15 |
Từ các kết quả trên, chúng ta có thể kết luận rằng chúng ta nhận được các bản ghi khác nhau dưới dạng đầu ra cả hai lần mặc dù chúng ta đã thực hiện cùng một truy vấn hai lần. Hàm RAND () đã chọn các bản ghi ngẫu nhiên cả hai lần cho cùng một truy vấn từ một bảng. Do đó, ngay cả khi chúng tôi thực hiện lại cùng một truy vấn, chúng tôi sẽ nhận được kết quả đầu ra khác nhau mỗi lần. Hiếm có khả năng nhận được cùng một bản ghi liên tục bằng cách sử dụng hàm RAND ().
Bây giờ, giả sử bạn muốn tất cả các bản ghi của bảng được tìm nạp một cách ngẫu nhiên.
Để làm như vậy, chúng ta cần thực hiện truy vấn sau:
Chúng tôi có thể nhận được các kết quả sau:
ID | Item_Name | Item_Quantity | Item_Price | Purchase_Date |
4 | Bottle | 1 | 250 | 2021-07-13 |
5 | Brush | 3 | 90 | 2021-07-15 |
1 | Soap | 5 | 200 | 2021-07-08 |
2 | Toothpaste | 2 | 80 | 2021-07-10 |
3 | Pen | 10 | 50 | 2021-07-12 |
Cũng có khả năng nhận được một số sắp xếp bản ghi khác nhau nếu chúng ta thực thi lại hàm RAND () trên bảng nhân viên.