1

sqlステートメントだけでテーブルの最後の3つの結果を返す簡単な方法があるかどうか疑問に思っていましたが、その順序で、つまり、結果が数え切れないほどある場合は、単純に順序付けするのではなく、98、99、100の順序で返します。 id DESCおよび制限3は、100、99、98の順序で返されます

どんな助けでも大歓迎です。

この場合のpsは、結果の量がわからず、量を見つけるためだけに2つのSQL要求を送信したくないとしましょう(OFFSETの回答の場合)。

4

4 に答える 4

8

1つの方法は、使用DESCしてからもう一度並べ替えることです。

SELECT * FROM (SELECT * FROM some_table ORDER BY id DESC LIMIT 3) a ORDER BY id
于 2010-06-17T05:51:17.797 に答える
3

2つのオプションだと思います。

  1. あなたが述べたようにDESCを使用してそれらを逆の順序で返し、アプリケーションコードで再び順序を逆にすることができます。これは、単一のクエリで実行でき、インデックスの3行を読み取るだけで済む可能性があるため、潜在的に最も効率的です。

  2. 最初にテーブル内の結果の数を確認してから、LIMIT <results-3>、3を実行できます。

于 2010-06-17T05:51:50.257 に答える
3

元の順序に戻すだけで大丈夫ですか?

SELECT * FROM (SELECT * FROM SOMETABLE ORDER BY ID DESC LIMIT 3) AS T ORDER BY ID;
于 2010-06-17T05:52:26.160 に答える
1
Select * 
FROM (SELECT * FROM yourTABLE ORDER BY ID DESC LIMIT 0,3) as TempTable ORDER BY ID
于 2010-06-17T05:51:49.703 に答える