Maison > base de données > tutoriel mysql > Comment implémenter la fonctionnalité Skip and Take pour la pagination avec des requêtes SQL ?

Comment implémenter la fonctionnalité Skip and Take pour la pagination avec des requêtes SQL ?

DDD
Libérer: 2025-01-10 21:11:46
original
171 Les gens l'ont consulté

How to Implement Skip and Take Functionality for Paging with SQL Queries?

Pagination des requêtes SQL : implémenter les fonctions skip et get

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal