0

usernamefollowerCountおよびの 3 つの列を持つテーブルがありますCreateDate

テーブルには約 110000 人のユーザーがいて、ユーザーの順番を表示しようとしていますfollowerCount。私は次のようにします:

select top 50 * 
from Users 
where followerCount <= @followerCount
order by followerCount desc, createDate desc

したがって、2 番目のページでは、最初のページから最後に渡しfollowerCount、次のページを受け取ります。

しかし、テーブルにはフォロワー数が同じユーザーがいます。たとえば、250 人のユーザーに 5000 人のフォロワーがいるとします。そのため、ページングを行うと、5000 フォロワーのユーザーが増えているため、次のページを正しく取得できません。

たとえば、私は 9 ページにいて、最後のユーザーには 5001 人のフォロワーがいて、5001 をストアド プロシージャに渡し、5000 人のユーザーを持つ 50 人のユーザーを取得します。しかし、さらに 200 人のユーザーがいて、今度は 5000 (前のページングの最後の数字) を再びストアド プロシージャに渡すと、残りはすべてスキップされ、4xxx フォロワーを持つユーザーが表示されます。

同じ数のフォロワーを持つ正しいユーザーを連れてくるにはどうすればよいですか?

訂正: この目的のために Entity Framework を使用しています。わかりやすいように SQL ステートメントを掲載しました。

4

1 に答える 1