Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Lấy 3 bản ghi theo thứ tự tùy chỉnh với ORDER BY LIMIT trong MySQL

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 đương LIMIT 0,3
  • ORDER BY EmployeeId ASC LIMIT 3: 3 hàng cũ nhất
  • ORDER BY RAND() LIMIT 3: 3 hàng ngẫu nhiên
  • LIMIT 3 OFFSET 2: Bỏ 2 hàng đầu, lấy 3 hàng tiếp (phân trang)