操作可能な MySQL データベースから最後の N 行を取得する場合、両方の時系列 (降順) と昇順は難しい場合があります。この記事ではこの問題に対処し、サブクエリを使用した解決策を提供します。
次のクエリは、主キー ID の降順に並べられたテーブルから最後の 50 行を選択することを目的としています:
SELECT * FROM `table` ORDER BY id DESC LIMIT 50;
ただし、このアプローチには欠点があります。行が削除されると、後続の行が昇順で正確に取得されなくなります。
同様に、以下のクエリでは操作の問題に対処できません:
SELECT * FROM `table` WHERE id > ((SELECT MAX(id) FROM chat) - 50) ORDER BY id ASC;
サブクエリを使用した解決策:
これらの制限を克服するには、サブクエリを使用できます:
SELECT * FROM ( SELECT * FROM table ORDER BY id DESC LIMIT 50 ) AS sub ORDER BY id ASC;
このクエリは最後のクエリを選択します。サブクエリを使用してテーブルから 50 行を降順で取得し、最終結果を取得する前に昇順で並べ替えます。
このアプローチにより、変更や変更に関係なく、最後の N 行を正確に取得できます。テーブルに対して削除が行われ、データが希望の時系列順に表示されるようになります。
以上がMySQL テーブルから最後の N 行を昇順で確実に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。