ホームページ >データベース >mysql チュートリアル >SQL クエリを使用したページングのスキップ アンド テイク機能を実装するにはどうすればよいですか?
SQL でカスタム ページネーションを実装し、大規模なデータセットから特定の数のレコードを取得するには、skip 関数と get 関数を使用する必要があります。以下は、SQL クエリを使用してこれを実現する方法を示しています。
クエリステートメント
フォーラムのエントリを含むテーブルから PostId を取得し、PostId でグループ化し、投稿ごとの最大 DateMade で並べ替えるクエリがあります。このクエリは正常に機能しますが、ページネーション機能を追加する必要があります。
解決策
SQL Server 2012 以降の場合
SQL Server 2012 以降では、OFFSET 句と FETCH NEXT 句を使用してレコードを簡単にスキップして取得できるようになりました。変更されたクエリは次のようになります:
<code class="language-sql">SELECT PostId FROM ( SELECT PostId, MAX(DateMade) AS LastDate FROM dbForumEntry GROUP BY PostId ) SubQueryAlias ORDER BY LastDate DESC OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;</code>
SQL Server 2008 の場合
SQL Server 2008 では、ROW_NUMBER() を使用して各レコードにシーケンス番号を割り当て、フィルターを適用して必要なレコードを選択できます。変更されたクエリは次のとおりです:
<code class="language-sql">DECLARE @Start INT DECLARE @End INT SELECT @Start = 10, @End = 20; WITH PostCTE AS ( SELECT PostId, MAX(DateMade) AS LastDate ,ROW_NUMBER() OVER (ORDER BY PostId) AS RowNumber FROM dbForumEntry GROUP BY PostId ) SELECT PostId, LastDate FROM PostCTE WHERE RowNumber > @Start AND RowNumber <= @End;</code>
以上がSQL クエリを使用したページングのスキップ アンド テイク機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。