Bạn cần sử dụng truy vấn con với câu lệnh select, một lựa chọn cho bên trong và một cho bên ngoài. Lựa chọn bên trong sẽ trả về các hàng và bên ngoài sẽ sắp xếp theo thứ tự tăng dần. Cú pháp như sau:
SELECT *FROM ( SELECT *FROM yourTableName ORDER BY yourColumnName1 DESC LIMIT 9 ) AS anyAliasName ORDER BY yourColumnName2;
Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau:
mysql> create table OrderByAfterLimit -> ( -> Id int NOT NULL AUTO_INCREMENT, -> UserName varchar(20), -> UserAge int, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.69 sec)
Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert. Truy vấn như sau:
mysql> insert into OrderByAfterLimit(UserName, UserAge) values('John',23); Query OK, 1 row affected (0.24 sec) mysql> insert into OrderByAfterLimit(UserName, UserAge) values('Larry',21); Query OK, 1 row affected (0.36 sec) mysql> insert into OrderByAfterLimit(UserName, UserAge) values('Bob',26); Query OK, 1 row affected (0.19 sec) mysql> insert into OrderByAfterLimit(UserName, UserAge) values('James',22); Query OK, 1 row affected (0.18 sec) mysql> insert into OrderByAfterLimit(UserName, UserAge) values('Robert',28); Query OK, 1 row affected (0.20 sec) mysql> insert into OrderByAfterLimit(UserName, UserAge) values('Mike',29); Query OK, 1 row affected (0.19 sec) mysql> insert into OrderByAfterLimit(UserName, UserAge) values('Carol',24); Query OK, 1 row affected (0.13 sec) mysql> insert into OrderByAfterLimit(UserName, UserAge) values('David',20); Query OK, 1 row affected (0.23 sec) mysql> insert into OrderByAfterLimit(UserName, UserAge) values('Maxwell',30); Query OK, 1 row affected (0.46 sec)
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau:
mysql> select *from OrderByAfterLimit;
Sau đây là kết quả:
+----+----------+---------+ | Id | UserName | UserAge | +----+----------+---------+ | 1 | John | 23 | | 2 | Larry | 21 | | 3 | Bob | 26 | | 4 | James | 22 | | 5 | Robert | 28 | | 6 | Mike | 29 | | 7 | Carol | 24 | | 8 | David | 20 | | 9 | Maxwell | 30 | +----+----------+---------+ 9 rows in set (0.00 sec)
Đây là truy vấn để sắp xếp theo giới hạn sau:
mysql> select *from -> ( -> select *from OrderByAfterLimit order by UserAge DESC LIMIT 9) AS tbl1 -> order by UserName;
Sau đây là kết quả:
+----+----------+---------+ | Id | UserName | UserAge | +----+----------+---------+ | 3 | Bob | 26 | | 7 | Carol | 24 | | 8 | David | 20 | | 4 | James | 22 | | 1 | John | 23 | | 2 | Larry | 21 | | 9 | Maxwell | 30 | | 6 | Mike | 29 | | 5 | Robert | 28 | +----+----------+---------+ 9 rows in set (0.00 sec)