Ausgehend von der Antwort gegeben von @chaos, aber mit ein paar Modifikationen:
-
Sie sollten immer
ORDER BY
verwenden wenn SieLIMIT
verwenden . Für eine RDBMS-Tabelle wird keine implizite Reihenfolge garantiert. Sie können normalerweise erhält Zeilen in der Reihenfolge des Primärschlüssels, aber darauf können Sie sich nicht verlassen, und es ist auch nicht portierbar. -
Wenn Sie in absteigender Reihenfolge sortieren, brauchen Sie die Anzahl der Zeilen in der Tabelle nicht vorher zu kennen.
-
Sie müssen einen Korrelationsnamen angeben (alias Tabellenalias) in eine abgeleitete Tabelle.
Hier ist meine Version der Abfrage:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;