Mệnh đề ORDER BY trong MariaDB
Trong MariaDB, mệnh đề ORDER BY
được sử dụng để sắp xếp kết quả của truy vấn theo một hoặc nhiều cột nhất định. Mặc định, dữ liệu sẽ được sắp xếp theo thứ tự tăng dần (ASC) trừ khi có chỉ định sắp xếp theo thứ tự giảm dần (DESC).

Giới thiệu về mệnh đề ORDER BY trong MariaDB
Mệnh đề ORDER BY
luôn xuất hiện ở cuối câu lệnh SQL vì nó hoạt động trên bảng kết quả sau khi dữ liệu đã được truy vấn. Mệnh đề này có thể được sử dụng với nhiều câu lệnh khác nhau như SELECT
, UPDATE
, DELETE
.
Lưu ý quan trọng:
- Nếu không chỉ định
ASC
hayDESC
, mặc định MariaDB sẽ sắp xếp theo thứ tự tăng dần (ASC). - Không thể sử dụng số nguyên để xác định cột cần sắp xếp trong
ORDER BY
. - Không thể dùng
ORDER BY
trong subquery hoặc trước các hàm tập hợp (GROUP BY
).
Cú pháp của ORDER BY trong MariaDB
SELECT cot1, cot2, ... FROM ten_bang ORDER BY cot1 [ASC | DESC], cot2 [ASC | DESC];
Trong đó:
Bài viết này được đăng tại [free tuts .net]
cot1
,cot2
: Các cột được sử dụng để sắp xếp dữ liệu.ASC
: Sắp xếp tăng dần (mặc định).DESC
: Sắp xếp giảm dần.
Sử dụng ORDER BY trong giao diện dòng lệnh (Command Prompt) trong MariaDB
Ví dụ: Sắp xếp danh sách sản phẩm theo nhà sản xuất theo thứ tự tăng dần (ASC).
root@host# mysql -u root -p Enter password:******* mysql> USE PRODUCTS; Database changed mysql> SELECT * FROM products_tbl ORDER BY product_manufacturer ASC;
Kết quả hiển thị:
ID_number | Tên sản phẩm | Nhà sản xuất |
---|---|---|
56789 | SuperBlast 400 | LMN Corp |
67891 | Zoomzoom 5000 | QFT Corp |
12347 | Orbitron 1000 | XYZ Corp |
???? Giải thích:
- Dữ liệu đã được sắp xếp theo nhà sản xuất từ A → Z (
LMN Corp
,QFT Corp
,XYZ Corp
).
Sử dụng ORDER BY trong PHP trong MariaDB
Ví dụ 1: Truy vấn dữ liệu và sắp xếp theo nhà sản xuất giảm dần (DESC)
Ta có thể sử dụng ORDER BY
trong PHP để sắp xếp dữ liệu trước khi hiển thị.
???? Lưu ý: mysql_query()
đã lỗi thời, nên sử dụng mysqli
hoặc PDO
thay thế.
<?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'rootpassword'; $dbname = 'PRODUCTS'; // Kết nối đến cơ sở dữ liệu $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname); // Kiểm tra kết nối if ($conn->connect_error) { die("Kết nối thất bại: " . $conn->connect_error); } // Câu lệnh SELECT sử dụng ORDER BY $sql = "SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl ORDER BY product_manufacturer DESC"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "Product ID: " . $row['product_id'] . "<br>"; echo "Tên sản phẩm: " . $row['product_name'] . "<br>"; echo "Nhà sản xuất: " . $row['product_manufacturer'] . "<br>"; echo "Ngày giao hàng: " . $row['ship_date'] . "<br>"; echo "--------------------------------<br>"; } } else { echo "Không tìm thấy kết quả."; } // Đóng kết nối $conn->close(); ?>
Giải thích:
- Dữ liệu được sắp xếp theo nhà sản xuất giảm dần (XYZ → QFT → LMN).
- Hiển thị từng sản phẩm cùng với thông tin chi tiết.
Kết quả hiển thị trên trình duyệt:
Product ID: 12347 Tên sản phẩm: Orbitron 1000 Nhà sản xuất: XYZ Corp Ngày giao hàng: 01/01/17 -------------------------------- Product ID: 67891 Tên sản phẩm: Zoomzoom 5000 Nhà sản xuất: QFT Corp Ngày giao hàng: 01/01/17 -------------------------------- Product ID: 56789 Tên sản phẩm: SuperBlast 400 Nhà sản xuất: LMN Corp Ngày giao hàng: 01/04/17 --------------------------------
Dữ liệu được sắp xếp theo thứ tự giảm dần của product_manufacturer
(XYZ → QFT → LMN).
Một số ví dụ nâng cao với ORDER BY trong MariaDB
Sắp xếp theo nhiều cột
SELECT * FROM products_tbl ORDER BY product_manufacturer ASC, product_name DESC;
Sắp xếp theo nhà sản xuất tăng dần, nếu trùng nhà sản xuất thì sắp xếp theo tên sản phẩm giảm dần.
Sắp xếp theo ngày giao hàng giảm dần
SELECT * FROM products_tbl ORDER BY ship_date DESC;
Lấy sản phẩm có ngày giao hàng mới nhất lên trước.
Giới hạn số lượng kết quả và sắp xếp
SELECT * FROM products_tbl ORDER BY ship_date DESC LIMIT 5;
Chỉ lấy 5 sản phẩm có ngày giao hàng gần nhất.
Kết bài
ORDER BY giúp sắp xếp dữ liệu theo thứ tự mong muốn.Có thể sử dụng nhiều cột để sắp xếp với ASC
và DESC
.Mặc định là ASC, nếu muốn giảm dần cần chỉ rõ DESC
.MariaDB không cho phép sử dụng số nguyên để xác định cột trong ORDER BY
. Khi lập trình với PHP, nên dùng mysqli
hoặc PDO
để đảm bảo bảo mật.
Ghi nhớ:
Dùng ORDER BY ASC
để sắp xếp tăng dần (A → Z, 1 → 9, ngày cũ → ngày mới).
Dùng ORDER BY DESC
để sắp xếp giảm dần (Z → A, 9 → 1, ngày mới → ngày cũ).
Biết cách sử dụng ORDER BY giúp bạn dễ dàng tổ chức và hiển thị dữ liệu theo thứ tự mong muốn!