Gunakan OFFSET SQL dan FETCH NEXT untuk melaksanakan pertanyaan paging (SQL Server 2012 dan ke atas)
Contoh ini menunjukkan cara menambah penomboran pada pertanyaan untuk mendapatkan semula siaran forum yang paling baru dibincangkan. Matlamatnya adalah untuk mengehadkan hasil kepada julat baris yang ditentukan (contohnya, "Item 10 hingga 20").
SQL Server 2012 memperkenalkan kata kunci OFFSET dan FETCH NEXT untuk memudahkan pelaksanaan paging:
<code class="language-sql">SELECT col1, col2, ... FROM ... WHERE ... ORDER BY -- 必须包含 ORDER BY 语句 -- 分页语句 OFFSET 10 ROWS -- 跳过 10 行 FETCH NEXT 10 ROWS ONLY; -- 获取 10 行</code>
Ubah suai pertanyaan asal:
<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>
Penomboran dalam SQL Server 2008 dan lebih awal
Dalam versi sebelum SQL Server 2012, anda boleh menggunakan fungsi ROW_NUMBER() dan COUNT() dalam kombinasi dengan subkueri untuk melaksanakan paging. Contohnya adalah seperti berikut:
<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>
Dengan melaraskan pembolehubah @Start dan @End, anda boleh menentukan julat halaman yang dikehendaki.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Paging Pertanyaan dalam SQL Server Menggunakan OFFSET dan FETCH NEXT, dan Alternatif untuk Versi Lama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!