Heim >Datenbank >MySQL-Tutorial >Wie implementiert man benutzerdefinierte Paginierung in SQL Server mit OFFSET/FETCH und ROW_NUMBER()?

Wie implementiert man benutzerdefinierte Paginierung in SQL Server mit OFFSET/FETCH und ROW_NUMBER()?

Linda Hamilton
Linda HamiltonOriginal
2025-01-10 21:07:42475Durchsuche

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

Benutzerdefiniertes SQL Server-Paging: Methoden OFFSET/FETCH und ROW_NUMBER()

SQL-Paginierung wird verwendet, um eine begrenzte Anzahl von Datensätzen aus einem Datensatz abzurufen, und wird normalerweise verwendet, um die Ergebnisse auf Seiten auf einer Benutzeroberfläche anzuzeigen. Das Ziel dieses Artikels besteht darin, die Paging-Funktionalität für eine Abfrage zu implementieren, die Beiträge und ihre neuesten Einträge abruft.

SQL Server 2012 und spätere Versionen können die Schlüsselwörter OFFSET und FETCH NEXT verwenden, um Paging zu implementieren. Die folgende Abfrage zeigt, wie diese Schlüsselwörter für die Paginierung verwendet werden:

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

Für Versionen vor SQL Server 2012 ist ein anderer Ansatz erforderlich. Eine Möglichkeit besteht darin, die Funktion ROW_NUMBER() zu verwenden, um einem Datensatz eine Zeilennummer zuzuweisen, und dann die Klausel WHERE zu verwenden, um die gewünschten Zeilen zu filtern:

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

Dieser Ansatz bietet eine Möglichkeit, Paging für frühere Versionen von SQL Server zu implementieren, sodass Sie die Anzahl der angezeigten Datensätze steuern und die Navigation in großen Datensätzen erleichtern können.

Das obige ist der detaillierte Inhalt vonWie implementiert man benutzerdefinierte Paginierung in SQL Server mit OFFSET/FETCH und ROW_NUMBER()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn