Започвайки от отговор дадено от @chaos, но с няколко модификации:
-
Винаги трябва да използвате
ORDER BY
ако използватеLIMIT
. Няма гарантиран имплицитен ред за RDBMS таблица. Може обикновено получавайте редове в реда на първичния ключ, но не можете да разчитате на това, нито е преносим. -
Ако поръчвате в низходящ ред, не е необходимо да знаете предварително броя на редовете в таблицата.
-
Трябва да посочите име на корелация (известен още като псевдоним на таблица) към производна таблица.
Ето моята версия на заявката:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;