Bắt đầu từ câu trả lời được cung cấp bởi @chaos, nhưng với một số sửa đổi:
-
Bạn nên luôn sử dụng
ORDER BY
nếu bạn sử dụngLIMIT
. Không có thứ tự ngầm nào được đảm bảo cho một bảng RDBMS. Bạn có thể thường lấy các hàng theo thứ tự của khóa chính, nhưng bạn không thể dựa vào điều này và cũng không phải là khóa di động. -
Nếu bạn sắp xếp theo thứ tự giảm dần, bạn không cần biết trước số lượng hàng trong bảng.
-
Bạn phải cung cấp một tên tương quan (hay còn gọi là bí danh bảng) cho một bảng dẫn xuất.
Đây là phiên bản truy vấn của tôi:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;