ホームページ >データベース >mysql チュートリアル >OFFSET/FETCH と ROW_NUMBER() を使用して SQL Server でカスタム ページネーションを実装する方法

OFFSET/FETCH と ROW_NUMBER() を使用して SQL Server でカスタム ページネーションを実装する方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-10 21:07:42472ブラウズ

How to Implement Custom Pagination in SQL Server Using OFFSET/FETCH and ROW_NUMBER()?

SQL Server カスタム ページング: OFFSET/FETCH および ROW_NUMBER() メソッド

SQL ページネーションは、データセットから限られた数のレコードを取得するために使用され、通常はユーザー インターフェイス上のページに結果を表示するために使用されます。この記事の目的は、投稿とその最新のエントリを取得するクエリのページング機能を実装することです。

SQL Server 2012 以降のバージョンでは、OFFSET キーワードと FETCH NEXT キーワードを使用してページングを実装できます。次のクエリは、これらのキーワードをページネーションに使用する方法を示しています:

<code class="language-sql">SELECT PostId
FROM (
    SELECT PostId, MAX(Datemade) AS LastDate
    FROM dbForumEntry
    GROUP BY PostId
) AS SubQueryAlias
ORDER BY LastDate DESC
OFFSET 10 ROWS    -- 跳过10行
FETCH NEXT 10 ROWS ONLY;  -- 获取接下来的10行</code>

SQL Server 2012 より前のバージョンの場合は、別のアプローチが必要です。 1 つの方法は、ROW_NUMBER() 関数を使用してレコードに行番号を割り当て、次に WHERE 句を使用して目的の行をフィルター処理することです。

<code class="language-sql">DECLARE @Start INT, @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 BETWEEN @Start AND @End; -- 获取第10到20行</code>
このアプローチは、以前のバージョンの SQL Server にページングを実装する方法を提供し、表示されるレコード数を制御し、大規模なデータ セットのナビゲーションを容易にすることができます。

以上がOFFSET/FETCH と ROW_NUMBER() を使用して SQL Server でカスタム ページネーションを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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