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ỏ quaoffsetdòng đầu, lấyrow_countdò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).