A partire dalla risposta data da @chaos, ma con alcune modifiche:
-
Dovresti sempre usare
ORDER BY
se usiLIMIT
. Non esiste un ordine implicito garantito per una tabella RDBMS. Puoi solitamente ottieni le righe nell'ordine della chiave primaria, ma non puoi fare affidamento su questo, né è portatile. -
Se ordini in ordine decrescente, non è necessario conoscere in anticipo il numero di righe nella tabella.
-
Devi fornire un nome di correlazione (alias tabella) in una tabella derivata.
Ecco la mia versione della query:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;