Mulai dari jawaban diberikan oleh @chaos, tetapi dengan sedikit modifikasi:
-
Anda harus selalu menggunakan
ORDER BY
jika Anda menggunakanLIMIT
. Tidak ada urutan implisit yang dijamin untuk tabel RDBMS. Anda mungkin biasanya dapatkan baris dalam urutan kunci utama, tetapi Anda tidak dapat mengandalkan ini, juga tidak portabel. -
Jika Anda memesan dalam urutan menurun, Anda tidak perlu mengetahui jumlah baris dalam tabel terlebih dahulu.
-
Anda harus memberikan nama korelasi (alias tabel alias) ke tabel turunan.
Ini versi kueri saya:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;