Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Penomboran dengan OFFSET dan FETCH atau ROW_NUMBER dalam SQL Server?
Anda sedang memproses pertanyaan yang mendapatkan semula siaran forum yang dibincangkan baru-baru ini berdasarkan entri terbaharu untuk setiap siaran. Anda ingin melanjutkan pertanyaan ini untuk menyokong penomboran, khususnya untuk membolehkan pengguna mendapatkan julat siaran tertentu, seperti "siaran aktif ke-10 hingga ke-20 paling baru-baru ini".
SQL Server 2012 dan ke atas
Dalam SQL Server 2012 dan lebih baru, anda boleh melaksanakan paging dengan mudah menggunakan kata kunci OFFSET dan FETCH:
<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>
Pertanyaan ini melangkau 10 baris pertama (mengimbangi) dan mendapat 10 baris seterusnya.
SQL Server 2008
Dalam SQL Server 2008, anda boleh menggunakan teknik 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 + 1 AND @End ORDER BY RowNumber;</code>
Pertanyaan ini menggunakan ungkapan jadual biasa (CTE) untuk menjana nombor baris bagi setiap siaran. Klausa WHERE kemudiannya menapis hasil untuk memasukkan hanya catatan dalam julat yang ditentukan, dan klausa ORDER BY memastikan bahawa siaran dikembalikan dalam susunan yang semakin meningkat oleh PostId.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Penomboran dengan OFFSET dan FETCH atau ROW_NUMBER dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!