Bạn đã thấy cách lệnh SELECT trong SQL lấy dữ liệu từ bảng MySQL. Khi bạn chọn các hàng, MySQL Server tự do trả về chúng trong bất kỳ thứ tự nào, trừ khi bạn chỉ thị cho nó cách sắp xếp kết quả. Bạn có thể sắp xếp một tập kết quả bởi việc thêm một mệnh đề ORDER BY mà xác định rõ các hàng hoặc các cột bạn muốn sắp xếp.
Cú pháp SQL chung của lệnh SELECT đi cùng với mệnh đề ORDER BY để sắp xếp dữ liệu từ bảng MySQL là:
SELECT truong1, truong2,...truongN FROM ten_bang ORDER BY truong1, [truong2...] [ASC [DESC]]
- Bạn có thể sắp xếp kết quả trả về trên bất kỳ trường nào.
- Bạn có thể sắp xếp kết quả trên nhiều hơn một trường.
- Bạn có thể sử dụng từ khóa ASC hoặc DESC để nhận kết quả theo thứ tự tăng dần hoặc giảm dần. Theo mặc định, thứ tự là tăng dần.
- Bạn có thể sử dụng mệnh đề WHERE…LIKE theo cách thông thường để xác định điều kiện.
Sử dụng mệnh đề ORDER BY để sắp xếp kết quả trong MySQL
Để lấy và sắp xếp dữ liệu từ bảng MySQL, bạn có thể sử dụng lệnh SELECT với mệnh đề ORDER BY.
Ví dụ sau sẽ trả về các bản ghi diemthi theo thứ tự tăng dần.
SELECT * FROM sinhvienk60 ORDER BY diemthi ASC;
Kết quả là:
+------+----------------+------------+---------+ | mssv | ho | ten | diemthi | +------+----------------+------------+---------+ | 3 | Nguyen Hoang | Huong | 7.50 | | 1 | Dinh Van | Cao | 8.00 | | 2 | Nguyen Van | Thanh | 9.00 | +------+----------------+------------+---------+
Sử dụng mệnh đề ORDER BY bên trong PHP Script
Bạn sử dụng cú pháp tương tự của mệnh đề ORDER BY trong hàm PHP là mysql_query(). Hàm này được sử dụng để thực thi lệnh SQL và sau đó hàm PHP khác là mysql_fetch_array() có thể được sử dụng để lấy tất cả dữ liệu đã chọn.
Ví dụ
Ví dụ sau trả về kết quả với thứ tự giảm dần của ten:
<?php $dbhost = 'localhost:3306'; $dbuser = 'root'; $dbpass = '123456'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Khong the ket noi: ' . mysql_error()); } $sql = 'SELECT mssv, ho, ten, diemthi FROM sinhvienk60 ORDER BY ten DESC'; mysql_select_db('sinhvien'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Khong the lay du lieu: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "MSSV :{$row['mssv']} <br> ". "Ho : {$row['ho']} <br> ". "Ten : {$row['ten']} <br> ". "Diem Thi : {$row['diemthi']} <br> ". "--------------------------------<br>"; } echo "Lay du lieu thanh cong\n"; mysql_close($conn); ?>
Sao chép code trên trong một trình soạn thảo chẳng hạn, lưu là orderby.php, bạn cần xác định các tham số $dbuser và $dbpass thích hợp (tùy theo cách bạn đã thiết lập với MySQL), sau đó, mở trình duyệt, chạy locallhost/orderby.php sẽ cho kết quả như sau: