Sắp xếp theo thứ tự ngược lại sql. Sắp xếp SQL - Mệnh đề ORDER BY

Khi truy xuất dữ liệu, điều quan trọng là phải lấy dữ liệu theo một dạng được sắp xếp nhất định. Việc sắp xếp có thể được thực hiện bởi bất kỳ trường nào với bất kỳ loại dữ liệu nào. Đây có thể là sắp xếp tăng dần hoặc giảm dần cho các trường số. Đối với các trường ký tự (văn bản), trường này có thể được sắp xếp theo thứ tự bảng chữ cái, mặc dù về bản chất nó cũng được sắp xếp theo thứ tự tăng dần hoặc giảm dần. Nó cũng có thể được thực hiện theo bất kỳ hướng nào - từ A đến Z và ngược lại từ Z đến A.

Bản chất của quá trình sắp xếp là giảm trình tự theo một thứ tự nhất định. Bạn có thể tìm hiểu thêm về cách sắp xếp trong bài viết “Thuật toán sắp xếp”. Ví dụ: sắp xếp một chuỗi số tùy ý theo thứ tự tăng dần:

2, 4, 1, 5, 9

sẽ dẫn đến một chuỗi có thứ tự:

1, 2, 4, 5, 6

Tương tự, khi sắp xếp theo thứ tự tăng dần của các giá trị chuỗi:

Ivanov Ivan, Petrov Petr, Ivanov Andrey

kết quả sẽ là:

Ivanov Andrey, Ivanov Ivan, Petrov Petrov

Ở đây dòng “Andrey Ivanov” đã được chuyển lên đầu, vì việc so sánh các chuỗi được thực hiện theo từng ký tự. Cả hai dòng đều bắt đầu bằng cùng một ký tự "Ivanov". Vì ký hiệu “A” trong từ “Andrey” xuất hiện sớm hơn trong bảng chữ cái so với ký hiệu “I” trong từ “Ivan” nên dòng này sẽ được đặt sớm hơn.

Sắp xếp trong truy vấn SQL

Để thực hiện sắp xếp, bạn cần thêm lệnh ORDER BY vào chuỗi truy vấn. Sau lệnh này, trường thực hiện sắp xếp sẽ được chỉ định.

Ví dụ: chúng ta sử dụng bảng hàng hóa hàng hóa:

số
(số sản phẩm)
tiêu đề
(Tên)
giá
(giá)
1 tiếng phổ thông50
2 dưa hấu120
3 Quả dứa80
4 Chuối40

Dữ liệu ở đây đã được sắp xếp theo cột "num". Bây giờ, hãy xây dựng một truy vấn sẽ hiển thị một bảng có các sản phẩm được sắp xếp theo thứ tự bảng chữ cái:

LỰA CHỌN * TỪ HÀNG ĐẶT HÀNG THEO TÊN

CHỌN * TỪ hàng hóa – chỉ định chọn tất cả các trường từ bảng hàng hóa;

ORDER BY – lệnh sắp xếp;

tiêu đề – cột mà việc sắp xếp sẽ được thực hiện.

Kết quả thực hiện yêu cầu đó như sau:

số tiêu đề giá
3 Quả dứa80
2 dưa hấu120
4 Chuối40
1 tiếng phổ thông50

Bạn cũng có thể sắp xếp cho bất kỳ trường nào trong bảng.

Sắp xếp hướng

Theo mặc định, lệnh ORDER BY sắp xếp theo thứ tự tăng dần. Để điều khiển hướng sắp xếp theo cách thủ công, hãy sử dụng từ khóa ASC (tăng dần) hoặc DESC (giảm dần) sau tên cột. Do đó, để hiển thị bảng của chúng tôi theo thứ tự giá giảm dần, bạn cần đặt truy vấn như sau:

LỰA CHỌN * TỪ HÀNG ĐẶT HÀNG THEO GIÁ DESC

Sắp xếp theo giá tăng dần sẽ là:

LỰA CHỌN * TỪ HÀNG ĐẶT HÀNG THEO GIÁ ASC

Sắp xếp theo nhiều trường

SQL cho phép sắp xếp theo nhiều trường cùng một lúc. Để thực hiện việc này, sau lệnh ORDER BY, các trường bắt buộc sẽ được biểu thị và phân tách bằng dấu phẩy. Thứ tự của kết quả truy vấn sẽ được cấu hình theo thứ tự mà các trường sắp xếp được chỉ định.

cột 1 cột2 cột 3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 Một
1 3 Một
3 4 Một

Hãy sắp xếp bảng theo quy tắc sau:

LỰA CHỌN * TỪ ĐẶT HÀNG có thể lập trình của tôi THEO cột1 ASC, cột2 DESC, cột3 ASC

Những thứ kia. cột đầu tiên tăng dần, cột thứ hai giảm dần, cột thứ ba lại tăng dần. Truy vấn sẽ sắp xếp các hàng theo cột đầu tiên, sau đó theo cột thứ hai mà không vi phạm quy tắc đầu tiên. Sau đó, cũng không vi phạm các quy tắc hiện có, theo điều thứ ba. Kết quả sẽ là một tập dữ liệu như thế này:

cột 1 cột2 cột 3
1 3 Một
1 3 c
1 2 Một
2 2 b
2 1 b
3 1 Một
3 1 c

Thứ tự của lệnh ORDER BY trong truy vấn

Việc sắp xếp hàng thường được thực hiện cùng với điều kiện chọn dữ liệu. Lệnh ORDER BY được đặt sau điều kiện lựa chọn WHERE. Ví dụ: chúng tôi chọn các sản phẩm có giá dưới 100 rúp, được sắp xếp theo tên theo thứ tự bảng chữ cái:

LỰA CHỌN * TỪ HÀNG Ở ĐÂU giá 100ĐẶT HÀNG THEO giá ASC

Ghi chú:
Tất cả các bài viết trong danh mục hướng dẫn SQL hiện tại đều sử dụng các ví dụ và bài toán dựa trên cơ sở dữ liệu đào tạo.

Theo dạng cơ sở dữ liệu quan hệ thông thường đầu tiên, thứ tự các hàng trong bảng không quan trọng. Nhưng trong thực tế, thường phải sắp xếp thông tin trước khi hiển thị trên màn hình.

Mệnh đề ORDER BY chịu trách nhiệm sắp xếp thứ tự các hàng được tải trong truy vấn SQL. Nó nằm ở cuối yêu cầu:

LỰA CHỌN<Перечень столбцов>TỪ<Перечень таблиц>ĐẶT HÀNG BỞI<Условие сортировки>

Điều kiện sắp xếp chỉ định các cột mà các hàng trong bảng kết quả sẽ được sắp xếp theo đó:

ĐẶT HÀNG THEO col1, col2

Sắp xếp thứ tự trong SQL

Có 2 cách sắp xếp: tăng dần và giảm dần. Để chỉ ra kiểu sắp xếp trong truy vấn, sau tên cột, hãy chỉ định từ khóa ASC (tăng dần) hoặc DESC (giảm dần), xác định thứ tự tăng dần hoặc giảm dần tương ứng. Loại mặc định là ASC:

ORDER BY col1 -- mệnh đề tiếp theo sẽ tương đương với ORDER BY col1 ACS

Cũng có thể chỉ định một thứ tự khác cho các cột khác nhau:

ĐẶT HÀNG THEO col1 DESC, col2 ASC

Để củng cố tài liệu, giải quyết vấn đề trên cơ sở dữ liệu giáo dục:

Bạn cần lấy danh sách ID nhân viên, sắp xếp theo nhóm theo thứ tự tăng dần và ngày tuyển dụng “từ mới nhất đến cũ nhất”.

CHỌN id, Nhóm, Hire_date TỪ Nhân viên ĐẶT HÀNG THEO Nhóm, Hire_date DESC

Hãy bổ sung cú pháp của câu lệnh SELECT bằng mệnh đề ORDER BY (thanh dọc có nghĩa là một trong các tùy chọn phải được chọn):

CHỌN [TableName.]ColumnName[, [TableName.]ColumnName2 ...] TỪ [[DatabaseName.]SchemaName.]TableName ColumnName [, [TableName.]ColumnName2 ...]]

  • Chuyển tiếp >

Nếu tài liệu từ office-menu.ru giúp ích được cho bạn, hãy ủng hộ dự án để tôi có thể phát triển thêm.

Thông thường cần phải hiển thị kết quả của truy vấn theo một thứ tự nhất định, chẳng hạn như theo thứ tự bảng chữ cái. Với mục đích này, DBMS có một chức năng đặc biệt trong ngôn ngữ SQL - sắp xếp. Trong trường hợp này, lập trình viên có thể chọn trường nào và theo thứ tự nào sẽ xảy ra để đạt được kết quả mong muốn mà không cần sử dụng các kỹ năng lập trình nghiêm túc.

Sắp xếp trong cơ sở dữ liệu là gì?

Làm việc với cơ sở dữ liệu luôn gắn liền với một lượng lớn thông tin cần được sắp xếp. Hiện nay, có một số DBMS với nhiều chức năng khác nhau, trong đó phổ biến nhất là Oracle và MS SQL. Sắp xếp thông tin, là một trong những quy trình chính khi làm việc với cơ sở dữ liệu, được cung cấp bởi một chức năng tích hợp đặc biệt trong mỗi quy trình đó.

Dữ liệu xếp hạng cho phép bạn đơn giản hóa quá trình tìm kiếm và trong một số trường hợp giúp giải quyết một số vấn đề nhất định hoặc tối ưu hóa hoạt động của chương trình. Việc sắp xếp SQL được thực hiện bởi một trường được chọn riêng và nếu cần, nếu có các giá trị giống hệt nhau trong các phần tử của trường này, bạn có thể chỉ định các tham số bổ sung xác định vị trí của các hàng.

Lệnh sắp xếp

Việc sắp xếp SQL trong cơ sở dữ liệu được cung cấp bằng cách sử dụng hàm ORDER BY. Vì vậy, khi xuất thông tin từ cơ sở dữ liệu, sau khi chỉ định các cột và bảng mà việc đọc sẽ được thực hiện, truy vấn phải chỉ định lệnh sắp xếp, sau đó xác định trường hoặc các trường mà việc sắp xếp sẽ được thực hiện.

Ví dụ: nếu bạn cần lấy dữ liệu từ các trường Tên và Tuổi từ bảng Mọi người, đồng thời hiển thị kết quả theo thứ tự bảng chữ cái theo cột Tên thì truy vấn sau sẽ hữu ích: CHỌN Tên, Tuổi TỪ Người ĐẶT HÀNG THEO Tên.

Làm cách nào để thiết lập thứ tự sắp xếp?

Điều kiện hiện đại đặt ra nhiều nhiệm vụ khác nhau cho người lập trình và đôi khi cần phải xác định trước kết quả sẽ được hiển thị theo thứ tự nào - giảm dần hay tăng dần, theo thứ tự bảng chữ cái hay theo thứ tự ngược lại? Và để thực hiện điều này trong SQL, thứ tự sắp xếp được xác định bằng cách thêm từ khóa vào truy vấn. Sau khi chọn các trường và bảng để lấy thông tin mong muốn, bạn phải thêm ĐẶT HÀNG THEO, sau đó chỉ định tên của cột mà bạn muốn sắp xếp.

Để có thứ tự ngược lại, bạn phải chỉ định tham số DESC sau tên. Nếu cần sắp xếp các phần tử theo hai tiêu chí trở lên thì các cột được biểu thị bằng dấu phẩy và ưu tiên xếp hạng sẽ được dành cho trường đứng đầu trong danh sách. Điều đáng chú ý là tham số DESC chỉ cung cấp khả năng sắp xếp các phần tử theo thứ tự ngược lại trong một trường, sau tên của từ khóa này được chỉ định, vì vậy nếu cần, nó phải được chỉ định trong tất cả các cột đã chọn.

Phương pháp sắp xếp thay thế

Nếu không thể sử dụng chức năng sắp xếp SQL tích hợp, bạn có thể viết một trong những thuật toán nổi tiếng. Nếu bạn cần đạt được thứ tự các phần tử nhanh nhất, bạn nên sử dụng một phương pháp dựa trên việc chia đôi mảng các phần tử. Cũng rất phổ biến là phương pháp xếp hạng "bong bóng", trong đó hai phần tử liền kề được hoán đổi nếu chúng được định vị không chính xác, "sắp xếp kim tự tháp", đưa phần tử lớn nhất xuống cuối danh sách và "sắp xếp chèn", phương pháp này lần lượt xác định trước vị trí của từng phần tử.

Tuy nhiên, việc tự viết một thuật toán sẽ không làm tăng đáng kể tốc độ sắp xếp, tuy nhiên, nó sẽ góp phần phát triển kỹ năng lập trình và cũng sẽ cho phép bạn sửa đổi quy trình bằng cách điều chỉnh sơ đồ xếp hạng cho phù hợp với cơ sở dữ liệu cụ thể để nâng cao hiệu quả của chương trình.

Trong tương lai, chúng ta có thể cần sắp xếp lựa chọn của mình - theo thứ tự bảng chữ cái cho văn bản hoặc tăng dần/giảm dần cho các giá trị số. Với những mục đích như vậy trong SQL có một nhà điều hành đặc biệt ĐẶT HÀNG BỞI .

1. Sắp xếp dữ liệu đã chọn.

Hãy sắp xếp toàn bộ bảng của chúng ta theo số lượng sản phẩm bán ra, cụ thể là theo cột Số lượng.

LỰA CHỌN * TỪ ĐẶT HÀNG Sumproduct THEO Số tiền

Chúng tôi thấy rằng truy vấn đã sắp xếp các bản ghi theo thứ tự tăng dần trong trường Số lượng. Bắt buộc phải tuân theo trình tự của các toán tử, tức là. toán tử ĐẶT HÀNG BỞI nên đi ở cuối yêu cầu. Nếu không bạn sẽ nhận được một thông báo lỗi.

Cũng là một tính năng của nhà điều hành ĐẶT HÀNG BỞI là nó có thể sắp xếp dữ liệu theo trường mà chúng tôi không chọn trong truy vấn, tức là nó có trong cơ sở dữ liệu là đủ.

2. Sắp xếp theo nhiều trường.

Bây giờ hãy sắp xếp thêm ví dụ của chúng ta theo một trường nữa. Hãy để nó là một cánh đồng Thành phố, nơi hiển thị nơi bán sản phẩm.

LỰA CHỌN * TỪ ĐẶT HÀNG Sumproduct THEO Số lượng, Thành phố

Thứ tự sắp xếp sẽ phụ thuộc vào thứ tự của các trường trong yêu cầu. Nghĩa là, trong trường hợp của chúng tôi, đầu tiên dữ liệu sẽ được sắp xếp theo cột Số lượng, và sau đó bởi Thành phố.

3. Hướng sắp xếp.

Mặc dù toán tử mặc định ĐẶT HÀNG BỞI sắp xếp theo thứ tự tăng dần, chúng ta cũng có thể chỉ định các giá trị sắp xếp theo thứ tự giảm dần. Để làm điều này, ở cuối mỗi trường chúng ta đặt toán tử DESC (là viết tắt của từ GIẢM GIÁ).

LỰA CHỌN * TỪ ĐẶT HÀNG Sumproduct THEO Số tiền DESC , Thành phố

Trong ví dụ này, giá trị trong trường Số lượngđược sắp xếp theo thứ tự giảm dần và trong trường Thành phố- tăng dần. Toán tử DESC chỉ áp dụng cho một cột nên nếu cần thiết phải ghi sau mỗi trường tham gia sắp xếp.