Mệnh đề ORDER BY trong MariaDB
Mệnh đề ORDER BY trong MariaDB được sử dụng để sắp xếp kết quả của các câu truy vấn theo thứ tự tăng dần (ASC) hoặc giảm dần (DESC) dựa trên các cột cụ thể. Nếu không chỉ định thứ tự, mặc định sẽ là sắp xếp tăng dần (ASC). Mệnh đề này có thể được áp dụng cho nhiều loại câu lệnh như SELECT, DELETE, UPDATE, giúp tổ chức và hiển thị dữ liệu một cách trực quan hơn.

Điểm cần lưu ý:
- ORDER BY luôn được đặt ở cuối câu truy vấn, không xuất hiện trong các truy vấn con (subquery) hoặc trước các hàm tổng hợp (aggregate functions).
- Không thể sử dụng chỉ số cột (kiểu số nguyên) để thay thế tên cột trong ORDER BY.
- Có thể sắp xếp dựa trên một hoặc nhiều cột cùng lúc.
Cú pháp cơ bản của mệnh đề ORDER BY trong MariaDB
SELECT field, field2,... FROM table_name ORDER BY field [ASC|DESC];
Ví dụ minh họa
Tại cửa sổ lệnh Command Prompt
Truy vấn đơn giản sắp xếp theo thứ tự tăng dần tên nhà sản xuất:
root@host# mysql -u root -p password; Enter password:******* mysql> use PRODUCTS; Database changed; mysql> SELECT * FROM products_tbl ORDER BY product_manufacturer ASC; +-------------+----------------+----------------------+ | ID_number | Nomenclature | product_manufacturer | +-------------+----------------+----------------------+ | 56789 | SuperBlast 400 | LMN Corp | | 67891 | Zoomzoom 5000 | QFT Corp | | 12347 | Orbitron 1000 | XYZ Corp | +-------------+----------------+----------------------+
Trong ví dụ này:
Bài viết này được đăng tại [free tuts .net]
- Cột product_manufacturer được sắp xếp theo thứ tự bảng chữ cái tăng dần (ASC).
- Các cột khác giữ nguyên giá trị, nhưng thứ tự các hàng thay đổi theo yêu cầu.
Sử dụng mã PHP để áp dụng mệnh đề ORDER BY trong MariaDB
Trong một ứng dụng PHP, bạn có thể sử dụng câu lệnh SQL như sau:
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Không thể kết nối: ' . mysql_error()); } $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl ORDER BY product_manufacturer DESC'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Không thể lấy dữ liệu: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Mã sản phẩm: {$row['product_id']} <br> ". "Tên sản phẩm: {$row['product_name']} <br> ". "Nhà sản xuất: {$row['product_manufacturer']} <br> ". "Ngày giao hàng: {$row['ship_date']} <br> ". "--------------------------------<br>"; } echo "Dữ liệu đã được truy xuất thành công\n"; mysql_close($conn); ?>
Kết quả đầu ra:
Sau khi thực hiện truy vấn sắp xếp giảm dần (DESC) tên nhà sản xuất, kết quả trả về như sau:
Mã sản phẩm: 12347 Tên sản phẩm: Orbitron 1000 Nhà sản xuất: XYZ Corp Ngày giao hàng: 01/01/17 -------------------------------- Mã sản phẩm: 67891 Tên sản phẩm: Zoomzoom 5000 Nhà sản xuất: QFT Corp Ngày giao hàng: 01/01/17 -------------------------------- Mã sản phẩm: 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 truy xuất thành công
Kết bài
Mệnh đề ORDER BY giúp tối ưu hóa việc sắp xếp dữ liệu theo nhu cầu cụ thể, hỗ trợ cải thiện trải nghiệm người dùng khi xem hoặc quản lý dữ liệu. Việc kết hợp ORDER BY với các điều kiện lọc khác (như WHERE) còn tăng tính linh hoạt, phù hợp với nhiều tình huống truy vấn phức tạp trong thực tế.