Desc và asc là gì

Khi sử dụng dữ liệu để phân tích, thống kê hoặc hiển thị lên các website, việc sắp xếp theo thứ tự là một tính năng rất hữu ích. Bạn có thể làm điều này chỉ với từ khóa ORDER BY.

1. Từ khóa ORDER BY

Từ khóa ORDER BY được sử dụng để sắp xếp kết quả theo thứ tự tăng dần hoặc giảm dần.

Trong đó, thứ tự mặc định sẽ là tăng dần [nếu người dùng không khai báo]. Trường hợp muốn sắp xếp theo thứ tự giảm dần, chỉ cần thêm từ khóa DESC.

SELECT cột 1, cột 2,…

FROM tên cột

ORDER BY cột 1, cột 2,… ASC|DESC;

Trong đó:

ASC – ascending: tăng dần

DESC – descending: giảm dần

2. Ví dụ ORDER BY

Để thực hiện ví dụ này, bạn cần nhập cơ sở dữ liệu mẫu Northwind vào SQL Server Management Studio. Hãy xem bài viết hướng dẫn ngay dưới đây:

Tham khảo: Hướng dẫn tải và cài đặt dữ liệu mẫu Northwind trong SQL Server Management Studio

Câu lệnh SQL dưới đây sẽ lấy tất cả dữ liệu khách hàng từ bảng Customers và hiển thị dưới dạng danh sách tăng dần dựa theo cột Country [vì lúc này không khai báo ASC hay DESC]. Chú ý cột Country trong kết quả, thứ tự sắp xếp sẽ theo bảng chữ cái.

SELECT * FROM Customers

ORDER BY Country;

3. Ví dụ ORDER BY DESC

Câu lệnh SQL dưới đây sẽ lấy tất cả dữ liệu khách hàng từ bảng Customers và hiển thị dưới dạng danh sách giảm dần dựa theo cột Country. Chú ý cột Country trong kết quả, thứ tự đã đảo ngược so với ví dụ trên.

SELECT * FROM Customers

ORDER BY Country DESC;

4. Ví dụ ORDER BY nhiều cột

Câu lệnh SQL dưới đây sẽ lấy tất cả dữ liệu khách hàng từ bảng Customers dựa theo cột Country và CompanyName. Điều này có nghĩa là nó sẽ sắp xếp theo cột Country trước, nếu có hàng nào giá trị Country giống nhau sẽ tiếp tục dựa vào CompanyName để sắp xếp. Chú ý hai cột này trong bảng kết quả.

SELECT * FROM Customers

ORDER BY Country, CompanyName;

Một ví dụ khác về việc sử dụng từ khóa ORDER BY nhiều cột. Câu lệnh dưới đây sẽ lấy tất cả dữ liệu khách hàng từ bảng Customers sắp xếp tăng dần dựa theo cột Country nếu có giá trị Country nào trùng nhau sẽ tiếp tục dựa vào CompanyName để sắp xếp nhưng theo chiều ngược lại. Hãy chú ý vào hai cột này trong bảng kết quả.

SELECT * FROM Customers

ORDER BY Country ASC, CompanyName DESC;

Qua bài viết này hy vọng các bạn đã có thể tự mình sắp xếp các kết quả hiển thị theo mong muốn. Bằng cách sử dụng linh hoạt các hàm đã học, BAC tin chắc rằng các bạn sẽ sớm làm chủ được dữ liệu. Đừng quên đón đọc các bài viết mới nhất tại website bacs.vn để cập nhật các nội dung mới nhất về SQL.

Nguồn tham khảo:

//www.w3schools.com/

Nhu cầu đào tạo doanh nghiệp

BAC là đơn vị đào tạo BA đầu tiên tại Việt Nam. Đối tác chính thức của IIBA quốc tế. Ngoài các khóa học public, BAC còn có các khóa học in house dành riêng cho từng doanh nghiệp. Chương trình được thiết kế riêng theo yêu cầu của doanh nghiệp, giúp doanh nghiệp giải quyết những khó khăn và tư vấn phát triển.

Tham khảo chương trình đào tạo: 

BAC - Biên soạn và tổng hợp nội dung

Khi sử dụng lệnh SELECT lấy dữ liệu thì theo mặc định nó sẽ sắp xếp kết quả từ cũ tới mới. Tuy nhiên bạn có thể thay đổi thứ tự sắp xếp ngược lại theo dạng từ mới tới cũ, hay thậm chí là sắp xếp theo một column nào đó cũng được bằng cách sủ dụng lệnh ORDER BY.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Lệnh ORDER BY dùng chung với lệnh SELECT để sắp xếp kết quả trả về theo tiêu chí:

  • Kết quả sẽ tăng hoặc giảm dần
  • Có thể chọn một hoặc nhiều columns để sắp xếp

Sắp xếp theo 1 column

Cú pháp như sau:

Bài viết này được đăng tại [free tuts .net]

SELECT field1, field2, ... FROM table_name WHERE ... ORDER BY column_name sort_type


Trong đó:

  • column_name là tên column cần sắp xếp
  • sort_type là loại sắp xếp và có giá trị là:
    • ASC nếu tăng dần
    • DESC nếu giảm dần

Ví dụ: Lấy danh sách sinh viên trong bảng SINHVIEN và kết quả trả về sắp xếp theo ID sinh viên và tăng dần

SELECT MaSV, TenSV, NamSinh FROM SINHVIEN ORDER BY MaSV ASC

Sắp xếp theo nhiều column

Cú pháp như sau:

SELECT field1, field2, ... FROM table_name WHERE ... ORDER BY column_name1 sort_type1, column2 sort_type2, ...

Giải thích tương tự như trường hợp trên, nghĩa là column_name sẽ là tên column và sort_type sẽ là cách sort tăng [ASC] hoặc giảm [DESC].

Ví dụ: Lấy danh sách sinh viên trong bảng SINHVIEN và sắp xếp theo ID sinh viên là tăng dần và năm sinh giảm dần

SELECT MaSV, TenSV, NamSinh FROM SINHVIEN ORDER BY MaSV ASC, NamSinh DESC

2. Một số ví dụ khác về ORDER BY trong MySQL

Trước tiên bạn cần tạo database QLHS và tạo bảng SINHVIEN, sau đó thêm vào một số record như sau:

CREATE DATABASE QLHS; USE QLHS; CREATE TABLE SINHVIEN[ MaSV INT[11] NOT NULL PRIMARY KEY AUTO_INCREMENT, TenSV VARCHAR [255], NamSinh INT[4] ] ENGINE = INNODB; INSERT INTO SINHVIEN [TenSV, NamSinh] VALUES ['Nguyen Van A', '1990']; INSERT INTO SINHVIEN [TenSV, NamSinh] VALUES ['Nguyen Van B', '1991']; INSERT INTO SINHVIEN [TenSV, NamSinh] VALUES ['Nguyen Van C', '1980']; INSERT INTO SINHVIEN [TenSV, NamSinh] VALUES ['Nguyen Van D', '1976']; INSERT INTO SINHVIEN [TenSV, NamSinh] VALUES ['Nguyen Van E', '1990']; INSERT INTO SINHVIEN [TenSV, NamSinh] VALUES ['Nguyen Van F', '1954']; INSERT INTO SINHVIEN [TenSV, NamSinh] VALUES ['Nguyen Van G', '1967']; INSERT INTO SINHVIEN [TenSV, NamSinh] VALUES ['Nguyen Van H', '1978']; INSERT INTO SINHVIEN [TenSV, NamSinh] VALUES ['Nguyen Van I', '1991']; INSERT INTO SINHVIEN [TenSV, NamSinh] VALUES ['Nguyen Van K', '2000'];

Ok bây giờ ta làm các ví dụ nhé.

Ví dụ 1: Lấy danh sách sinh viên sắp xếp theo ID và tăng dần

SELECT * FROM SINHVIEN ORDER BY MaSV ASC

Kết quả:

Ví dụ 2: Lấy danh sách sinh viên có năm sinh bé hơn 1990 và sắp xếp theo Năm sinh tăng dần

SELECT * FROM SINHVIEN WHERE NamSinh < 1990 ORDER BY NamSinh ASC

Kết quả:

Ví dụ 3: Lấy danh sách sinh viên và sắp xếp tăng dần theo mã sinh viên và giảm dần theo năm sinh

SELECT * FROM SINHVIEN ORDER BY MaSV ASC, NamSinh DESC

Kết quả:

3. Lời kết

Vẫn còn một số cách sắp xếp ORDER BY nâng cao trong MySQL nữa như:

  • Sắp xếp theo biểu thức
  • Sắp xếp với hàm FIELD[]

Nhưng mình không đề cập trong bài này vì sẽ rất khó cho những ban mới học MySQL.

SQL Server

November 25, 2021677 views0

Lệnh ORDER BY trong SQL thường sử dụng trong câu lệnh SELECT dùng để sắp xếp tăng hoặc giảm dần. Tham khảo bài viết sau để hiểu cách dùng mệnh đề SQL này.

1/ Mô tả SQL ORDER BY

ORDER BY trong SQL dùng để sắp xếp theo thứ tự tăng hoặc giảm dần, thể hiện qua hai lệnh ASC và DESC.

  • DESC được sử dụng để sắp xếp dữ liệu tăng dần. Viết tắt của từ tiếng Anh Descending có nghĩa là giảm dần.
  • ASC được sử dụng để sắp xếp dữ liệu giảm dần. Viết tắt của từ tiếng Anh Ascending có nghĩa là tăng dần.

Như ở bài SELECT TOP mà Kienit có đề cập tới, ORDER BY sẽ sắp xếp thứ tự trước để giúp bạn lấy top n dữ liệu cao nhất hoặc thấp nhất.

2/ Cú pháp ORDER BY SQL

SELECT danh_sach_cot

FROM ten_bang

[WHERE dieu_kien]

[ORDER BY cot1, cot2, .. cotN] [ASC | DESC]

Lưu ý:

Nếu bạn không chọn lệnh ASC hay DESC thì mặc định mệnh đề SQL này sẽ sắp xếp theo thứ tự tăng dần, giống như ORDER BY ASC.

Cột được chọn để sắp xếp phải nằm trong  câu lệnh SELECT

Cách hoạt động của lệnh này trong câu lệnh SELECT SQL như sau:

  • Bước 1: Chạy mệnh đề FROM để tìm bảng
  • Bước 2: Xem xét điều kiện ở mệnh đề WHERE để lọc
  • Bước 3: Mệnh đề ORDER BY trong SQL sẽ sắp xếp tăng hoặc giảm dần
  • Bước 4: In ra các cột đã chọn ở mệnh đề SELECT

3/ Ví dụ cách sử dụng

Chia sẻ các ví dụ cơ bản về cách sử dụng mệnh đề ORDER BY SQL.

Lọc không dùng ASC và DESC

Ví dụ: Không dùng lệnh ASC và DESC

SELECT product_id, product_name, net_sales

FROM sales

WHERE net_sales > 0

ORDER BY net_sales

Lọc không dùng ASC và DESC

Sắp theo tăng hoặc giảm

Nếu bạn dùng lệnh ASC thì kết quả trả về cũng sẽ giống như bạn không dùng còn nếu dùng lệnh ORDER BY DESC thì kết quả trả về sẽ như sau

SELECT product_id, product_name, net_sales

FROM sales

WHERE net_sales > 0

ORDER BY net_sales DESC

Sử dụng lệnh ORDER BY DESC trong SQL

Dùng cả ASC và DESC

Nếu trong mệnh đề bạn muốn sắp xếp cột A tăng và cột B giảm dần thì làm như sau

Ví dụ:

SELECT product_id, product_name, net_sales

FROM sales

WHERE net_sales > 0

ORDER BY product_name ASC , net_sales DESC

Sử dụng cả ASC và DESC trong lệnh ORDER BY SQL

Dùng ký tự đại diện

Bạn có thể xác định vị trí của từng cột trong câu lệnh SELECT từ trái sang phải là 1, 2, …. Số 1 hoặc 2 là đại diện cho từng cột thay vì bạn phải ghi lại tên cột một lần nữa.

Ví dụ:

SELECT product_id, product_name, net_sales

FROM sales

WHERE net_sales > 0

ORDER BY 3 ASC

Dùng ký tự 1 2 3 để đại diện cho từng cột

Trong đó số 3 trong câu lệnh SQL sẽ dại diện cho cột net_sales.

Qua các thông tin ở trên thì chắc các bạn đã hết thắc mắc ORDER BY là gì rồi đúng không. Câu lệnh sắp xếp trong SQL được sử dụng rất nhiều, vì vậy khi nắm được kiến thức cơ bản thì bạn cần áp dụng thật nhiều để quen cách sử dụng.

Nhiều bạn mới khi tìm hiểu tìm hiểu về SQL sẽ dễ nhầm lẫn giữa GROUP BY và ORDER BY. Trong các bài viết tiếp theo, Kienit sẽ chia sẻ về lệnh GROUP BY, các bạn hãy theo dõi nha.

Share

Video liên quan

Chủ Đề