Heim > Datenbank > MySQL-Tutorial > Wie implementiert man die Paginierung mit OFFSET und FETCH oder ROW_NUMBER in SQL Server?

Wie implementiert man die Paginierung mit OFFSET und FETCH oder ROW_NUMBER in SQL Server?

Patricia Arquette
Freigeben: 2025-01-10 21:02:42
Original
324 Leute haben es durchsucht

How to Implement Pagination with OFFSET and FETCH or ROW_NUMBER in SQL Server?

SQL-Paging-Implementierung: Verwendung der Schlüsselwörter SKIP und TAKE

Problembeschreibung

Sie verarbeiten eine Abfrage, die kürzlich diskutierte Forumbeiträge basierend auf dem neuesten Eintrag für jeden Beitrag abruft. Sie möchten diese Abfrage erweitern, um die Paginierung zu unterstützen, insbesondere um dem Benutzer das Abrufen eines bestimmten Bereichs von Beiträgen zu ermöglichen, z. B. „der 10. bis 20. zuletzt aktive Beitrag“.

Antworten

SQL Server 2012 und höher

In SQL Server 2012 und höher können Sie Paging einfach mit den Schlüsselwörtern OFFSET und FETCH implementieren:

<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>
Nach dem Login kopieren

Diese Abfrage überspringt die ersten 10 Zeilen (Offset) und ruft die nächsten 10 Zeilen ab.

SQL Server 2008

In SQL Server 2008 können Sie die folgenden Techniken verwenden:

<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 + 1 AND @End
ORDER BY RowNumber;</code>
Nach dem Login kopieren

Diese Abfrage verwendet einen allgemeinen Tabellenausdruck (CTE), um Zeilennummern für jeden Beitrag zu generieren. Die WHERE-Klausel filtert dann die Ergebnisse, um nur Beiträge innerhalb des angegebenen Bereichs einzuschließen, und die ORDER BY-Klausel stellt sicher, dass Beiträge in aufsteigender Reihenfolge nach PostId zurückgegeben werden.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage