01. Mệnh đề ORDER BY trong SQL

Mệnh đề ORDER BY trong SQL

Trong SQL, mệnh đề ORDER BY được sử dụng để sắp xếp dữ liệu theo chiều tăng dần hoặc giảm dần. Lệnh này cũng là một trong những lệnh rất phổ biến trong SQL.

Một số hệ cơ sở dữ liệu mặc định sắp xếp dữ liệu của nó theo chiều tăng dần.

Cú pháp sử dụng mệnh đề ORDER BY như sau:

SELECT ten_cot FROM ten_bang WHERE cac_dieu_kien ORDER BY cac_bieu_thuc [ASC | DESC];

Ví dụ cách sử dụng ORDER BY trong SQL

Giả sử ta có bảng dữ liệu về thông tin khách hàng (Ttkh):

ID

Ten

Tuoi

Dia_chi

Luong

1 Nguyen Van A 25 Cu Chi 14
2 Dinh Manh N 26 Ho Chi Minh 18
3 Nguyen Phuoc T 25 Quang Ninh 19
4 Nguyen Son T 27 Hai Phong 23
5 Dan Ng 34 Ha Noi 35
6 Bang K 31 Ha Noi 45

Khi bạn muốn sắp xếp kết quả theo thú tự tăng dần của ‘Tuoi’ và ‘Luong’ thi làm như sau:

Ví dụ 1:

SELECT * FROM Ttkh ORDER BY Tuoi, Luong;

Kết quả thu được sẽ là:

Ở ví dụ trên khi muốn sắp xếp theo chiều tăng dần, bạn không cần dùng từ khóa ‘ASC’ bởi vì với MySQL thì chiều tăng dần là chiều sắp xếp mặc định. Và khi bạn sắp xếp với thứ tự của “Tuoi” và “Luong” thì tham số đầu tiên (Tuoi) sẽ có ưu tiên cao hơn. Tức là khi sắp xếp thì cột tuổi sẽ được sắp xếp trước, nếu tuổi mà bằng nhau thì sẽ xét tới điều kiện thứ 2 là lương. Điều này được thể hiện rất rõ ở ảnh trên.

Một số trường hợp cụ thể của ORDER BY gồm:

ORDER BY ASC

Kết quả trả về là các bản ghi theo thứ tự tăng dần.

ORDER BY DESC

Kết quả trả về là các bản ghi theo thứ tự giảm dần.

Ví dụ:

Khi ta muốn lấy ra các bản ghi với thứ tự được sắp xếp theo chiều giảm dần của lương.

SELECT * FROM Ttkh ORDER BY Luong DESC;

Kết quả:

ORDER BY RANDOM

Được sử dụng khi ta cần lấy dữ liệu (bản ghi) một cách ngẫu nhiên từ database.

Ví dụ:

Khi bạn muốn lấy ngẫu nhiên một bản ghi:

Cú pháp cho MYSQL:

SELECT * FROM Ttkh ORDER BY Rand() LIMIT 1;

Có thể nhận thấy rằng kết quả thu được sau mỗi lần lấy dữ liệu là không giống nhau

Các cú pháp cho các hệ cơ sở dữ liệu khác:

Postgre SQL:

SELECT ten_cot FROM ten_bang ORDER BY RANDOM() LIMIT 1;

SQL Server:

SELECT TOP 1 ten_cot FROM ten_bang ORDER BY NEWID();

Oracle:

SELECT ten_cot FROM (SELECT ten_cot FROM ten_bang ORDER BY dbms_random.value) WHERE rownum = 1;

ORDER BY LIMIT

Được sử dụng khi ta chỉ muốn lấy một số lượng nhất định các bản ghi từ database.

Như ví dụ với hàm RAND() ở trên, bạn có thể giới hạn số bản ghi muốn lấy bởi chỉ ra ‘LIMIT so_ban_ghi_muon_lay’. Khi bạn muốn lấy ngẫu nhiên hai bản ghi thay vì 1 bản ghi, bạn có thể dùng câu lệnh sau:

SELECT * FROM Ttkh ORDER BY Rand() LIMIT 2;

Kết quả:

ORDER BY với nhiều cột

Sắp xếp dữ liệu trên nhiều cột

Bạn có thể xem ví dụ 1 để hiểu thêm về cách dùng này.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *