Startende fra svaret givet af @kaos, men med nogle få ændringer:
-
Du skal altid bruge
ORDER BY
hvis du brugerLIMIT
. Der er ingen implicit rækkefølge garanteret for en RDBMS-tabel. Du kan normalt få rækker i rækkefølgen af den primære nøgle, men du kan ikke stole på dette, og det er heller ikke bærbart. -
Hvis du bestiller efter i faldende rækkefølge, behøver du ikke kende antallet af rækker i tabellen på forhånd.
-
Du skal give et korrelationsnavn (aka tabel alias) til en afledt tabel.
Her er min version af forespørgslen:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;