Giới thiệu
Kết hợp ORDER BY và LIMIT để lấy N hàng đầu/cuối theo thứ tự sắp xếp.
1. Tạo bảng và dữ liệu
mysql> create table DemoTable1551 (
-> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeName varchar(20)
-> );
Query OK, 0 rows affected (0.52 sec)
mysql> insert into DemoTable1551(EmployeeName) values('Chris');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable1551(EmployeeName) values('Robert');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1551(EmployeeName) values('Mike');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1551(EmployeeName) values('Sam');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1551(EmployeeName) values('David');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1551(EmployeeName) values('Adam');
Query OK, 1 row affected (0.11 sec)
2. Dữ liệu gốc (theo ID tăng dần)
mysql> select * from DemoTable1551;
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 1 | Chris | | 2 | Robert | | 3 | Mike | | 4 | Sam | | 5 | David | | 6 | Adam | +------------+--------------+ 6 rows in set (0.00 sec)
3. Lấy 3 hàng có ID lớn nhất (mới nhất)
mysql> select * from DemoTable1551
-> order by EmployeeId desc limit 0,3;
LIMIT offset, count: offset=0 (bỏ qua 0 hàng), count=3 (lấy 3 hàng)
4. Kết quả
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 6 | Adam | | 5 | David | | 4 | Sam | +------------+--------------+ 3 rows in set (0.00 sec)
Các biến thể thường dùng:
LIMIT 3: Tương đươngLIMIT 0,3ORDER BY EmployeeId ASC LIMIT 3: 3 hàng cũ nhấtORDER BY RAND() LIMIT 3: 3 hàng ngẫu nhiênLIMIT 3 OFFSET 2: Bỏ 2 hàng đầu, lấy 3 hàng tiếp (phân trang)