Uitgaande van het antwoord gegeven door @chaos, maar met een paar aanpassingen:
-
Gebruik altijd
ORDER BY
als uLIMIT
. gebruikt . Er is geen impliciete volgorde gegarandeerd voor een RDBMS-tabel. Je mag meestal krijg rijen in de volgorde van de primaire sleutel, maar u kunt hier niet op vertrouwen en het is ook niet overdraagbaar. -
Als u in aflopende volgorde bestelt, hoeft u niet vooraf het aantal rijen in de tabel te weten.
-
U moet een correlatienaam opgeven (ook wel tabel alias genoemd) naar een afgeleide tabel.
Dit is mijn versie van de vraag:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;