1mのレコードテーブルがあり、検索結果を10,000に制限し、それを超えないようにしたいとします。それで、私はそのために何を使用しますか?答えは、limit句を使用することです。
例
select recid from mytable order by recid asc limit 10000
これにより、このテーブルに入力された最後の10,000レコードが得られます。
これまでのところ、ページングはありません。しかし、制限フレーズはすでに使用されています。
それは次のレベルに疑問を投げかけます。
このレコードの特定のレコードセットを一度に100レコードでページングしたい場合はどうすればよいですか?フレーズはすでに元のクエリの一部になっているので limit
、今度はページングを処理するために、どのように再度使用しますか?
組織の場合。クエリには最初から制限句がありませんでした。ページングが進行する間、次のように調整してから、次のようlimit 0,100
に調整します。しかし、現時点ではできません。limit 100,100
limit 200,100
2つの制限フレーズを次々に使用したいと思うでしょう。これは機能しません。
limit 10000 limit 0,100
確かにそれはエラーになるでしょう。
では、この特定の場合の解決策は何ですか?
[編集]
この質問を投稿した後、組織の制限が10000であることに気付きました。ページングルーチンが開始されると、クエリは無意味になります。私はどういうわけか自分自身を混乱させましたが order by recid asc limit 10000
、それは全体としてwhere句の一部です。実際には、このlimit 10000
部分は、レコードセットを要求された制限に制限することを除いて、レコードセットのコンテンツには関係ありません。したがって、ページングが開始されると、制限を10000に保つ意味はありません。これで時間を無駄にしてすみません。:(