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

Khi tìm nạp dữ liệu, điều quan trọng là phải lấy chúng ở một dạng có thứ tự 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ỳ kiểu 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), đây có thể là một sắp xếp theo thứ tự bảng chữ cái, mặc dù về bản chất nó cũng là một sắp xếp 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.

Thực chất của quá trình sắp xếp là đưa dãy về một thứ tự nhất định. Bạn có thể tìm thêm thông tin chi tiết về 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 dãy 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ự như vậy, khi sắp xếp các giá trị chuỗi tăng dần:

Ivanov Ivan, Petrov Peter, Ivanov Andrey

kết quả sẽ là:

Ivanov Andrey, Ivanov Ivan, Petrov Petr

Ở đây dòng "Ivanov Andrey" đã đi đầ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ác ký tự giống nhau "Ivanov". Vì ký tự "A" trong từ "Andrey" xuất hiện sớm hơn trong bảng chữ cái so với ký tự "I" trong từ "Ivan", dòng này sẽ được đặt sớm hơn.

Sắp xếp trong một 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 mà việc sắp xếp được thực hiện sẽ được chỉ ra.

Ví dụ, chúng tôi sử dụng bảng hàng hóa:

num
(Số mặt hàng)
chức vụ
(chức vụ)
giá bán
(giá bán)
1 Quan thoại50
2 Dưa hấu120
3 Quả dứa80
4 Chuối40

Dữ liệu đã được sắp xếp theo cột "num". Bây giờ, hãy tạo một truy vấn sẽ hiển thị một bảng với 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 tiêu đề

CHỌN * TỪ hàng hóa - cho biết để 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 để sắp xếp theo.

Kết quả của việc thực hiện một truy vấn như sau:

num chức vụ giá bán
3 Quả dứa80
2 Dưa hấu120
4 Chuối40
1 Quan thoại50

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

Hướng sắp xếp

Theo mặc định, ORDER BY sắp xếp theo thứ tự tăng dần. Để kiểm soát hướng sắp xếp theo cách thủ công, từ khóa ASC (tăng dần) hoặc DESC (giảm dần) được chỉ định 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, chúng tôi cần đặt truy vấn như sau:

LỰA CHỌN * TỪ HÀNG ĐẶT HÀNG THEO giá MÔ TẢ

Sắp xếp theo thứ tự tăng dần của giá sẽ là:

LỰA CHỌN * TỪ HÀNG ORDER 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 được phân tách bằng dấu phẩy. Thứ tự trong kết quả của truy vấn sẽ được điều chỉnh theo thứ tự mà các trường sắp xếp được chỉ định.

cột1 cột2 cột 3
3 1 NS
1 3 NS
2 2 NS
2 1 NS
1 2 Một
1 3 Một
3 4 Một

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

LỰA CHỌN * TỪ LỆNH trong bảng của tôi THEO cột 1 ASC, cột 2 DESC, cột 3 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 thứ tự các hàng theo cột đầu tiên, sau đó, không vi phạm quy tắc đầu tiên, theo cột thứ hai. Sau đó, theo cùng một cách, mà không vi phạm các quy tắc hiện có, theo thứ ba. Kết quả sẽ là tập dữ liệu sau:

cột1 cột2 cột 3
1 3 Một
1 3 NS
1 2 Một
2 2 NS
2 1 NS
3 1 Một
3 1 NS

ORDER BY lệnh trong một truy vấn

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

LỰA CHỌN * HÀNG TỪ ĐÂ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à tác vụ dựa trên cơ sở dữ liệu mẫu.

Theo dạng cơ sở dữ liệu quan hệ thông thường đầu tiên, thứ tự của các hàng trong bảng không quan trọng. Nhưng trong thực tế, thông thường cần 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 các hàng được dỡ bỏ trong truy vấn SQL. Nó nằm ở cuối yêu cầu:

LỰA CHỌN<Перечень столбцов>TỪ<Перечень таблиц>ĐẶT 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:

ĐẶT HÀNG THEO col1, col2

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

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

ORDER BY col1 - mệnh đề tiếp theo sẽ bằng 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 đào tạo:

Bạn muốn lấy danh sách ID nhân viên được sắp xếp theo nhóm theo thứ tự tăng dần và ngày tuyển dụng "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 với mệnh đề ORDER BY (thanh dọc có nghĩa là cần phải chọn một trong các tùy chọn):

CHỌN [Tên_bảng.] Tên_bảng [, [Tên_bảng.] Tên_bài2…] TỪ [[Tên_bản_cơ sở dữ liệu.] Tên_mục đồ.] Tên_bảng. Tên_bảng [, [Tên_bảng.] Tên_bài2 ...]]

  • Chuyển tiếp>

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

Thường thì cần phải hiển thị kết quả của một truy vấn theo một thứ tự nhất định, ví dụ, theo thứ tự bảng chữ cái. Đối với điều này, DBMS có một chức năng đặc biệt trong ngôn ngữ SQL - sắp xếp. Đồng thời, lập trình viên có thể chọn các trường nào và theo thứ tự nó sẽ xảy ra để đạt được kết quả mong muốn mà không cần áp 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 liên tục được liên kết 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 một loạt các chức năng, 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 đề hoặc tối ưu hó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 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 cách sắp xếp của các hàng.

Lệnh sắp xếp

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 hiển thị thông tin từ cơ sở dữ liệu, sau khi chỉ định các cột và bảng mà từ đó 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 từ bảng Mọi người, bạn cần lấy dữ liệu từ trường Tên và Tuổi, trong khi hiển thị kết quả theo thứ tự bảng chữ cái của cột Tên, thì truy vấn sau sẽ giúp bạn: CHỌN Tên, Tuổi TỪ Mọi người ĐẶT HÀNG THEO Tên.

Làm cách nào để đặt 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 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 thứ tự ngược lại? Và đối với điều này, trong SQL, thứ tự sắp xếp được xác định bằng cách thêm một từ khóa vào truy vấn. Sau khi chọn các trường và bảng mà từ đó thông tin mong muốn sẽ nhận được, bạn cần thêm ORDER BY, 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 phải sắp xếp thứ tự các phần tử theo hai tiêu chí trở lên, thì các cột được phân tách bằng dấu phẩy và ưu tiên xếp hạng sẽ được dành cho trường đứng trước trong danh sách. Cần lưu ý rằng việc sắp xếp các phần tử theo thứ tự ngược lại, tham số DESC chỉ cung cấp cho một trường, sau tên của từ khóa này, do đó, nếu cần, nó phải được chỉ định trong tất cả các cột đã chọn.

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

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

Viết một thuật toán bằng tay của chính bạ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 các 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 một cơ sở dữ liệu cụ thể để cải thiện 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 đối với văn bản hoặc tăng dần / giảm dần - đối với 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 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 bán sản phẩm, cụ thể là theo cột Số lượng.

LỰA CHỌN * TỪ ĐƠN ĐẶT HÀNG SẢN PHẨM THEO SỐ LƯỢNG

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à nhà điều hành ĐẶT BỞI nên đi vào cuối yêu cầu. Nếu không, bạn sẽ nhận được thông báo lỗi.

Cũng là một tính năng của nhà điều hành ĐẶT 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, nghĩa là nó đủ để nó có trong cơ sở dữ liệu.

2. Sắp xếp theo một số trường.

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

LỰA CHỌN * TỪ ĐƠN ĐẶT HÀNG SẢN PHẨM 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. Đó 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 phân loại.

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

LỰA CHỌN * TỪ ĐƠN ĐẶT HÀNG SẢN PHẨM THEO SỐ LƯỢNG DESC, TP.

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. Nhà điều hành DESC chỉ được sử dụng cho một cột, do đó, nếu cần, nó phải được viết sau mỗi trường tham gia vào việc sắp xếp.