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“.
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>
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>
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!