Utilisez OFFSET et FETCH NEXT de SQL pour implémenter des requêtes de pagination (SQL Server 2012 et supérieur)
Cet exemple montre comment ajouter une pagination à une requête pour récupérer les messages du forum discutés les plus récemment. L'objectif est de limiter les résultats à une plage de lignes spécifiée (par exemple, « Éléments 10 à 20 »).
SQL Server 2012 a introduit les mots-clés OFFSET et FETCH NEXT pour simplifier l'implémentation de la pagination :
<code class="language-sql">SELECT col1, col2, ... FROM ... WHERE ... ORDER BY -- 必须包含 ORDER BY 语句 -- 分页语句 OFFSET 10 ROWS -- 跳过 10 行 FETCH NEXT 10 ROWS ONLY; -- 获取 10 行</code>
Modifier la requête d'origine :
<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>
Pagination dans SQL Server 2008 et versions antérieures
Dans les versions antérieures à SQL Server 2012, vous pouvez utiliser les fonctions ROW_NUMBER() et COUNT() en combinaison avec des sous-requêtes pour implémenter la pagination. Un exemple est le suivant :
<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 BETWEEN @Start AND @End;</code>
En ajustant les variables @Start et @End, vous pouvez spécifier la plage de pages souhaitée.
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!