Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Paging dalam SQL Server untuk Mendapatkan Julat Baris Tertentu?
Penjelasan terperinci tentang teknologi paging SQL Server
Paging (atau melangkau bilangan baris tertentu dan mendapatkan bilangan baris tertentu) ialah ciri biasa dalam sistem pangkalan data. Fungsi paging tersuai boleh mengawal proses pengambilan data secara fleksibel. Artikel ini menunjukkan cara untuk melaksanakan paging dalam versi SQL Server yang berbeza, termasuk SQL Server 2012 dan lebih awal.
Keperluan pertanyaan
Andaikan terdapat pertanyaan untuk mendapatkan semula ID pos daripada jadual pangkalan data. Pertanyaan semasa mendapatkan semula 10 ID siaran teratas berdasarkan tarikh terkini. Matlamatnya adalah untuk melaksanakan penomboran supaya bilangan baris tertentu boleh dilangkau dan diambil, sekali gus mendapatkan semula "siaran aktif ke-10 hingga ke-20 paling baru" dan bukannya "10 teratas" sahaja.
Pelaksanaan SQL Server 2012
Dalam SQL Server 2012, penomboran boleh dicapai dengan mudah menggunakan kata kunci OFFSET
dan FETCH NEXT
:
<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 -- 跳过 10 行 FETCH NEXT 10 ROWS ONLY; -- 获取接下来的 10 行</code>
Pertanyaan ini akan melangkau 10 baris pertama dan mendapatkan 10 baris seterusnya, dengan berkesan mendapatkan kembali ID siaran bagi siaran aktif "ke-10 hingga ke-20" yang paling terkini.
Pelaksanaan SQL Server 2008
Dalam SQL Server 2008 dan versi terdahulu, melaksanakan paging adalah lebih kompleks. Anda boleh menggunakan gabungan fungsi ROW_NUMBER()
dan CTE (Ungkapan Jadual Biasa) untuk mencapai hasil yang diingini:
<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>
Dalam contoh ini, dua pembolehubah @Start
dan @End
diisytiharkan untuk mentakrifkan parameter penomboran. Pertanyaan pertama mengira nombor baris setiap siaran menggunakan fungsi ROW_NUMBER()
. Ia kemudian menggunakan CTE untuk menapis keputusan berdasarkan parameter penomboran yang ditentukan dan mendapatkan semula ID siaran yang diperlukan dan tarikh terbaharunya.
Dengan menggunakan teknik yang sesuai, paging tersuai boleh dilaksanakan dalam SQL untuk meningkatkan fleksibiliti pengambilan data dan mengoptimumkan pertanyaan pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Paging dalam SQL Server untuk Mendapatkan Julat Baris Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!