Afin d'implémenter une pagination personnalisée dans SQL et de récupérer un nombre spécifique d'enregistrements à partir d'un grand ensemble de données, vous devez utiliser les fonctions skip et get. Vous trouverez ci-dessous une démonstration de la façon d'y parvenir à l'aide de requêtes SQL.
Instruction de requête
Vous avez une requête qui récupère le PostId d'une table contenant des entrées de forum, regroupées par PostId et triées par DateMade maximale par publication. Cette requête fonctionne bien, mais vous souhaitez y ajouter une fonctionnalité de pagination.
Solution
Pour SQL Server 2012 et supérieur
À partir de SQL Server 2012, vous pouvez facilement ignorer et obtenir des enregistrements à l'aide des clauses OFFSET et FETCH NEXT. La requête modifiée ressemble à ceci :
<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>
Pour SQL Server 2008
Dans SQL Server 2008, vous pouvez utiliser ROW_NUMBER() pour attribuer un numéro de séquence à chaque enregistrement, puis appliquer un filtre pour sélectionner les enregistrements requis. Voici la requête modifiée :
<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>
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!