A partir da resposta dado por @chaos, mas com algumas modificações:
-
Você deve sempre usarORDER BY
se você usarLIMIT
. Não há ordem implícita garantida para uma tabela RDBMS. Você pode geralmente obter linhas na ordem da chave primária, mas você não pode confiar nisso, nem é portátil.
-
Se você ordenar por ordem decrescente, não precisa saber o número de linhas na tabela de antemão.
-
Você deve fornecer um nome de correlação (também conhecido como alias de tabela) para uma tabela derivada.
Aqui está minha versão da consulta:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;