Verwenden Sie SQLs OFFSET und FETCH NEXT, um Paging-Abfragen zu implementieren (SQL Server 2012 und höher)
Dieses Beispiel zeigt, wie man einer Abfrage eine Paginierung hinzufügt, um die zuletzt diskutierten Forumbeiträge abzurufen. Das Ziel besteht darin, die Ergebnisse auf einen bestimmten Zeilenbereich zu beschränken (z. B. „Elemente 10 bis 20“).
SQL Server 2012 hat die Schlüsselwörter OFFSET und FETCH NEXT eingeführt, um die Implementierung von Paging zu vereinfachen:
<code class="language-sql">SELECT col1, col2, ... FROM ... WHERE ... ORDER BY -- 必须包含 ORDER BY 语句 -- 分页语句 OFFSET 10 ROWS -- 跳过 10 行 FETCH NEXT 10 ROWS ONLY; -- 获取 10 行</code>
Ursprüngliche Abfrage ändern:
<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>
Paginierung in SQL Server 2008 und früher
In Versionen vor SQL Server 2012 können Sie die Funktionen ROW_NUMBER() und COUNT() in Kombination mit Unterabfragen verwenden, um Paging zu implementieren. Ein Beispiel ist wie folgt:
<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>
Durch Anpassen der @Start- und @End-Variablen können Sie den gewünschten Seitenbereich festlegen.
Das obige ist der detaillierte Inhalt vonWie implementiert man Abfrage-Paging in SQL Server mithilfe von OFFSET und FETCH NEXT sowie Alternativen für ältere Versionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!