ホームページ >データベース >mysql チュートリアル >データ操作にもかかわらず、MySQL から最後の N 行を昇順で取得するにはどうすればよいですか?
操作されたデータを使用して MySQL の最後の N 行を昇順で取得する
MySQL データベースから最後の N 行を選択するのは一般的な操作です。ただし、データを操作する場合、行を返す順序の指定は難しい場合があります。
次のシナリオを考えてみましょう。以下に基づいて、「table」という名前のテーブルから最後の 50 行を選択したいとします。列「id」、これが主キーです。 「id」による昇順で行を並べ替えることは必須の要件です。
失敗した試行
次のクエリは結果を降順で並べ替えようとしますが、失敗します。最後の 50 行を返す:
SELECT * FROM `table` ORDER BY id DESC LIMIT 50;
あるいは、このクエリは次のことを試みます。 "id" 値を最大の "id" 値から 50 を引いた値と比較することで最後の 50 行を識別しますが、行が削除されている場合は機能しません:
SELECT * FROM `table` WHERE id > ((SELECT MAX(id) FROM chat) - 50) ORDER BY id ASC;
解決策
この問題に対処するには、サブクエリを使用して目的の結果を達成できます。 result:
SELECT * FROM ( SELECT * FROM table ORDER BY id DESC LIMIT 50 ) AS sub ORDER BY id ASC;
このクエリは最初にサブクエリを実行し、「table」から最後の 50 行を選択し、降順に並べます。結果のサブクエリには「sub」というエイリアスが付けられます。
最後に、外側のクエリは「sub」サブクエリからすべての行を選択し、昇順に並べます。これにより、テーブルから最後の 50 行が効率的に取得され、「id」列に基づいて昇順で並べ替えられるようになり、行が操作された可能性がある場合に対処できます。
以上がデータ操作にもかかわらず、MySQL から最後の N 行を昇順で取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。