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à:
- ASC là việc sắp xếp tăng dần
- 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;