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

Lấy bản ghi thứ n (nth record) trong MySQL dùng LIMIT


Sử dụng LIMIT offset, count để lấy bản ghi tại vị trí cụ thể (0-based offset).

Cú pháp

SELECT * FROM table_name ORDER BY column_name LIMIT n-1, 1;

Giải thích:

  • LIMIT offset, row_count: bỏ qua offset dòng đầu, lấy row_count dòng.
  • Để lấy dòng thứ n (1-based): offset = n-1, row_count = 1.

Ví dụ minh họa

mysql> CREATE TABLE NthRecordDemo (Id INT, Name VARCHAR(200));
Query OK, 0 rows affected (0.92 sec)

mysql> INSERT INTO NthRecordDemo VALUES
(100,'John'), (101,'Bob'), (102,'Carol'), (103,'Smith'),
(104,'Johnson'), (105,'Sam'), (106,'David');
Query OK, 7 rows affected

Lấy bản ghi thứ 7 (n=7, offset=6):

mysql> SELECT * FROM NthRecordDemo ORDER BY Id LIMIT 6, 1;

Kết quả:

+------+-------+
| Id   | Name  |
+------+-------+
| 106  | David |
+------+-------+

Các biến thể

Mục đích Cú pháp
Dòng đầu tiên LIMIT 1 hoặc LIMIT 0,1
Dòng thứ 2 LIMIT 1,1
5 dòng đầu LIMIT 5
5 dòng tiếp theo (phân trang) LIMIT 5,5
Dòng cuối cùng ORDER BY id DESC LIMIT 1

Lưu ý

  • Luôn dùng ORDER BY để đảm bảo thứ tự ổn định.
  • Offset lớn (LIMIT 1000000, 1) chậm do phải quét qua 1M dòng. Tối ưu: dùng keyset pagination (WHERE id > last_id).
  • MySQL 8.0.18+ hỗ trợ OFFSET ... ROWS FETCH NEXT ... ROWS ONLY (chuẩn SQL).