ホームページ >データベース >mysql チュートリアル >MySQL テーブルから最後の N 行を昇順で確実に取得する方法

MySQL テーブルから最後の N 行を昇順で確実に取得する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-04 09:20:13972ブラウズ

How to Reliably Retrieve the Last N Rows in Ascending Order from a MySQL Table?

操作可能な MySQL テーブルから最後の N 行を昇順で取得する

操作可能な 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。