Um benutzerdefinierte Paginierung in SQL zu implementieren und eine bestimmte Anzahl von Datensätzen aus einem großen Datensatz abzurufen, müssen Sie Skip- und Get-Funktionen verwenden. Nachfolgend finden Sie eine Demonstration, wie Sie dies mithilfe von SQL-Abfragen erreichen können.
Abfrageanweisung
Sie haben eine Abfrage, die die PostId aus einer Tabelle mit Forumseinträgen abruft, die nach PostId gruppiert und nach dem maximalen Erstellungsdatum pro Beitrag sortiert sind. Diese Abfrage funktioniert einwandfrei, Sie möchten ihr jedoch eine Paginierungsfunktion hinzufügen.
Lösung
Für SQL Server 2012 und höher
Ab SQL Server 2012 können Sie mithilfe der Klauseln OFFSET und FETCH NEXT ganz einfach Datensätze überspringen und abrufen. Die geänderte Abfrage sieht folgendermaßen aus:
<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>
Für SQL Server 2008
In SQL Server 2008 können Sie ROW_NUMBER() verwenden, um jedem Datensatz eine Sequenznummer zuzuweisen und dann einen Filter anzuwenden, um die erforderlichen Datensätze auszuwählen. Hier ist die geänderte Abfrage:
<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>
Das obige ist der detaillierte Inhalt vonWie implementiert man die Skip-and-Take-Funktionalität für Paging mit SQL-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!