Maison > base de données > tutoriel mysql > Comment implémenter la pagination des requêtes dans SQL Server à l'aide de OFFSET et FETCH NEXT, ainsi que des alternatives pour les anciennes versions ?

Comment implémenter la pagination des requêtes dans SQL Server à l'aide de OFFSET et FETCH NEXT, ainsi que des alternatives pour les anciennes versions ?

DDD
Libérer: 2025-01-10 20:57:41
original
482 Les gens l'ont consulté

How to Implement Query Paging in SQL Server Using OFFSET and FETCH NEXT, and Alternatives for Older Versions?

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

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

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

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!

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