Počínaje odpovědí dává @chaos, ale s několika úpravami:
-
Vždy byste měli používat
ORDER BY
pokud používáteLIMIT
. Pro tabulku RDBMS není zaručeno žádné implicitní pořadí. Můžete obvykle získat řádky v pořadí primárního klíče, ale nemůžete se na to spolehnout a ani to není přenosné. -
Pokud objednáváte podle v sestupném pořadí, nemusíte předem znát počet řádků v tabulce.
-
Musíte zadat název korelace (alias tabulky) na odvozenou tabulku.
Zde je moje verze dotazu:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;