MySQL から最後の N 行を昇順で取得する
MySQL データベースから最後の N 行を取得することは、特に、一般的なタスクになる可能性があります。大きなテーブルを操作する場合。ただし、データの整合性を確保しながら結果を昇順に並べるのは困難になる可能性があります。
次のクエリを考えてみましょう:
SELECT * FROM `table` ORDER BY id DESC LIMIT 50;
一見すると、このクエリは選択しているように見えます。最後の 50 行。ただし、これは降順 (最大値から最小値へ) で行われるため、昇順の要件に違反します。
別のアプローチは次のとおりです。
SELECT * FROM `table` WHERE id > ((SELECT MAX(id) FROM chat) - 50) ORDER BY id ASC;
このクエリは、ID を持つ行を取得することを目的としています。最大 ID から 50 を引いた値より大きい値です。ただし、データが操作される可能性があり、行が削除される可能性があるため、失敗する可能性があり、
解決策: サブクエリのアプローチ
これらの課題に対処するには、サブクエリを使用できます。
SELECT * FROM ( SELECT * FROM table ORDER BY id DESC LIMIT 50 ) AS sub ORDER BY id ASC;
このクエリには、次のサブクエリが含まれています。最後の 50 行を降順で選択します。このサブクエリの結果は、「sub」と呼ばれる一時テーブルに保存されます。最後に、外側のクエリは「sub」からすべての行を選択し、それらを昇順に並べます。
このアプローチでは、テーブルが操作されている場合でも、最後の 50 行が確実に選択され、結果が昇順で表示されます。注文します。
以上がMySQL から最後の N 行を昇順で効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。