回答 から開始 @chaosによって提供されますが、いくつかの変更が加えられています:
-
常に
ORDER BY
を使用する必要がありますLIMIT
を使用する場合 。 RDBMSテーブルの暗黙的な順序は保証されていません。 通常 主キーの順序で行を取得しますが、これに依存することはできず、移植性もありません。 -
降順で並べ替える場合は、テーブルの行数を事前に知っておく必要はありません。
-
相関名を付ける必要があります (別名テーブルエイリアス)派生テーブルへ。
これが私のバージョンのクエリです:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;