Maison >base de données >tutoriel mysql >Comment implémenter une pagination personnalisée dans SQL Server à l'aide de OFFSET/FETCH et ROW_NUMBER() ?

Comment implémenter une pagination personnalisée dans SQL Server à l'aide de OFFSET/FETCH et ROW_NUMBER() ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-10 21:07:42475parcourir

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

Pagination personnalisée SQL Server : méthodes OFFSET/FETCH et ROW_NUMBER()

La pagination SQL est utilisée pour récupérer un nombre limité d'enregistrements à partir d'un ensemble de données et est généralement utilisée pour afficher les résultats dans des pages sur une interface utilisateur. L'objectif de cet article est d'implémenter la fonctionnalité de pagination pour une requête qui récupère les publications et leurs dernières entrées.

SQL Server 2012 et versions ultérieures peuvent utiliser les mots-clés OFFSET et FETCH NEXT pour implémenter la pagination. La requête suivante montre comment utiliser ces mots-clés pour la pagination :

<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>

Pour les versions antérieures à SQL Server 2012, une approche différente est requise. Une solution consiste à utiliser la fonction ROW_NUMBER() pour attribuer un numéro de ligne à un enregistrement, puis à utiliser la clause WHERE pour filtrer les lignes souhaitées :

<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>

Cette approche fournit un moyen d'implémenter la pagination pour les versions antérieures de SQL Server, vous permettant de contrôler le nombre d'enregistrements affichés et de faciliter la navigation dans de grands ensembles de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn