1. Mệnh đề ORDER BY

Mệnh đề ORDER BY được sử dụng để sắp xếp các kết quả trả về theo chiều tăng dần hoặc giảm dần. Trong các câu lệnh chọn SELECT các giá trị được trả về và sắp xếp theo chiều tăng dần, đôi khi ta cần sắp xếp các giá trị đó theo chiều ngược lại (giảm dần).

Có 2 từ khóa trong mệnh đề ORDER BY đó là:

  1. ASC là việc sắp xếp tăng dần
  2. DESC là việc sắp xếp giảm dần

Cú pháp của mệnh đề ORDER BY như sau:

SELECT column1, column2, ...
FROM table_name
ORDER BY column ASC|DESC;

Trong đó:

  • SELECT là câu lệnh chọn
  • column1, column2, ...là các cột được chọn lấy ra dữ liệu
  • FROM table_name là tên bảng chứa các dữ liệu cần lấy ra
  • ORDER BY column là sắp xếp theo cột được chỉ định
  • ASC là từ khóa sắp xếp tăng dần, DESC là từ khóa sắp xếp giảm dần

2. Ví dụ mệnh đề ORDER BY

Dưới đây là bảng KhachHang bao gồm các cột: ID, TenKH, DiaChi, ThanhPho, SoDienThoai

ID TenKH DiaChi ThanhPho SoDienThoai
1 Nguyen Van A Tay Ho Ha Noi 0888999888
2 Nguyen Van B Quan 5 Ho Chi Minh 0988988988
3 Nguyen Van C Quan 7 Ho Chi Minh 0899899899
4 Nguyen Van D Bac Tu Liem Ha Noi 0788788788
5 Nguyen Van E Ngo Quen Hai Phong 0858585858
6 Nguyen Van F Ngu Hanh Son Da Nang 0969696969
7 Nguyen Van G Tay Ho Ha Noi 0838383838

Tôi sẽ dùng câu lệnh SELECT để lấy ra thông tin của các khách hàng có địa chỉ là Hà Nội và sau đó tôi sẽ sắp xếp các kết quả trả về giảm dần theo cột TenKH trong bảng. Như vậy tôi sẽ sử dụng mệnh đề ORDER BY như sau:

SELECT * FROM KhachHang
WHERE ThanhPho = 'Ha Noi' ORDER BY TenKH DESC;

Kết quả như sau:

ID TenKH DiaChi ThanhPho SoDienThoai
7 Nguyen Van G Tay Ho Ha Noi 0838383838
4 Nguyen Van D Bac Tu Liem Ha Noi 0788788788
1 Nguyen Van A Tay  Ho Ha Noi 0888999888

Nếu như bạn cần lấy ra các khách hàng ở Hà Nội và không sắp xếp thì mặc định sẽ được sắp xếp theo giá trị tăng dần. Câu lệnh sẽ không cần sử dụng đến mệnh đề ORDER BY hoặc có thể dùng mệnh đề ORDER BY theo ASC

SELECT * FROM KhachHang
WHERE ThanhPho = 'Ha Noi' ORDER BY TenKH ASC;

Kết quả:

ID TenKH DiaChi ThanhPho SoDienThoai
1 Nguyen Van A Tay Ho Ha Noi 0888999888
4 Nguyen Van D Bac Tu Liem Ha Noi 0788788788
7 Nguyen Van G Tay Ho Ha Noi 0838383838

Có thể thực hiện mệnh đề ORDER BY với nhiều cột khác nhau. Ví dụ như ta có thể dùng mệnh đề ORDER BY cho 2 cột đó là cột ID và cột TenKH

SELECT * FROM KhachHang 
WHERE ThanhPho = 'Ha Noi' ORDER BY ID, ThanhPho;