Header ads

Header ads
» » Sắp xếp kết quả trong SQL

Để sắp xếp dữ liệu trong SQL, ta sử dụng mệnh đề ORDER BY.

ORDER BY được dùng để sắp xếp dữ liệu theo thứ tự tăng dần hoặc theo thứ tự giảm dần trên một hoặc nhiều cột. Một số database sắp xếp các kết quả truy vấn mặc định theo thứ tự tăng dần.

Cú pháp

Cú pháp cơ bản của mệnh đề 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 như sau:

SELECT danhsach_cot 
FROM ten_bang
[WHERE dieu_kien]
[ORDER BY cot1, cot2, .. cotN] [ASC | DESC];

Lưu ý:

    Ví dụ

    Giả sử bảng NHANVIEN có các bản ghi như sau:

     +----+----------+-----+-----------+----------+   | ID | TEN      |TUOI | DIACHI    | LUONG    |   +----+----------+-----+-----------+----------+   |  1 | Thanh    |  32 | Haiphong  |  2000.00 |   |  2 | Loan     |  25 | Hanoi     |  1500.00 |   |  3 | Nga      |  23 | Hanam     |  2000.00 |   |  4 | Manh     |  25 | Hue       |  6500.00 |   |  5 | Huy      |  27 | Hatinh    |  8500.00 |   |  6 | Cao      |  22 | HCM       |  4500.00 |   |  7 | Lam      |  24 | Haiduong  | 10000.00 |   +----+----------+-----+-----------+----------+

    Ví dụ sau minh họa cách sắp xếp theo thứ tự tăng dần cho TENLUONG.

    SQL> SELECT * FROM NHANVIEN
    ORDER BY TEN, LUONG; 

    Ví dụ trên trả về kết quả:

     +----+----------+-----+-----------+----------+   | ID | TEN      |TUOI | DIACHI    | LUONG    |   +----+----------+-----+-----------+----------+   |  6 | Cao      |  22 | HCM       |  4500.00 |   |  5 | Huy      |  27 | Hatinh    |  8500.00 |   |  7 | Lam      |  24 | Haiduong  | 10000.00 |   |  2 | Loan     |  25 | Hanoi     |  1500.00 |   |  4 | Manh     |  25 | Hue       |  6500.00 |   |  3 | Nga      |  23 | Hanam     |  2000.00 |   |  1 | Thanh    |  32 | Haiphong  |  2000.00 |   +----+----------+-----+-----------+----------+

    Khối lệnh sau sẽ sắp xếp kết quả theo thứ tự giảm dần bởi trường TEN.

    SQL> SELECT * FROM NHANVIEN
    ORDER BY TEN DESC;

    Kết quả trả về là:

     +----+----------+-----+-----------+----------+   | ID | TEN      |TUOI | DIACHI    | LUONG    |   +----+----------+-----+-----------+----------+   |  1 | Thanh    |  32 | Haiphong  |  2000.00 |   |  3 | Nga      |  23 | Hanam     |  2000.00 |   |  4 | Manh     |  25 | Hue       |  6500.00 |   |  2 | Loan     |  25 | Hanoi     |  1500.00 |   |  7 | Lam      |  24 | Haiduong  | 10000.00 |   |  5 | Huy      |  27 | Hatinh    |  8500.00 |   |  6 | Cao      |  22 | HCM       |  4500.00 |   +----+----------+-----+-----------+----------+

    Để lấy các hàng với thứ tự ưu tiên riêng, truy vấn SELECT sẽ như sau:

    SQL> SELECT * FROM NHANVIEN
    ORDER BY (CASE DIACHI
    WHEN 'Hanoi' THEN 1
    WHEN 'Haiduong' THEN 2
    WHEN 'HCM' THEN 3
    ELSE 100 END) ASC, DIACHI DESC;

    Kết quả trả về là:

     +----+----------+-----+-----------+----------+   | ID | TEN      |TUOI | DIACHI    | LUONG    |   +----+----------+-----+-----------+----------+   |  2 | Loan     |  25 | Hanoi     |  1500.00 |   |  7 | Lam      |  24 | Haiduong  | 10000.00 |   |  6 | Cao      |  22 | HCM       |  4500.00 |   |  1 | Thanh    |  32 | Haiphong  |  2000.00 |   |  3 | Nga      |  23 | Hanam     |  2000.00 |   |  5 | Huy      |  27 | Hatinh    |  8500.00 |   |  4 | Manh     |  25 | Hue       |  6500.00 |   +----+----------+-----+-----------+----------+

    Đầu tiên, ta có thể sắp xếp nhân viên theo DIACHI với thứ tự của riêng mình, sau đó, các DIACHI còn lại sẽ được sắp xếp tự nhiên theo thứ tự đảo ngược của bảng chữ cái.

    Trong phần tiếp theo, chúng ta sẽ tìm hiểu về các ràng buộc trong SQL, các bạn nhớ theo dõi nhé.

    Bài trước: Từ khóa DISTINCT trong SQL

    Bài tiếp: Các ràng buộc trong SQL


    Tham gia nhóm Facebook

    Cập nhật công nghệ từ Youtube tại link: https://www.youtube.com/channel/UCOxeYcvZPGf-mGLYSl_1LuA/videos
    Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
    Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com

    About Học viện đào tạo trực tuyến

    Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
    - Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
    - Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
    HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
    «
    Next
    Bài đăng Mới hơn
    »
    Previous
    Bài đăng Cũ hơn