Untuk melaksanakan penomboran tersuai dalam SQL dan mendapatkan semula bilangan rekod tertentu daripada set data yang besar, anda perlu menggunakan langkau dan dapatkan fungsi. Di bawah ialah demonstrasi cara mencapai ini menggunakan pertanyaan SQL.
Pernyataan pertanyaan
Anda mempunyai pertanyaan yang mendapatkan semula PostId daripada jadual yang mengandungi entri forum, dikumpulkan mengikut PostId dan diisih mengikut DateMade maksimum setiap siaran. Pertanyaan ini berfungsi dengan baik, tetapi anda ingin menambah fungsi penomboran kepadanya.
Penyelesaian
Untuk SQL Server 2012 dan ke atas
Bermula dengan SQL Server 2012, anda boleh melangkau dan mendapatkan rekod dengan mudah menggunakan klausa OFFSET dan FETCH NEXT. Pertanyaan yang diubah suai kelihatan seperti ini:
<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>
Untuk SQL Server 2008
Dalam SQL Server 2008, anda boleh menggunakan ROW_NUMBER() untuk menetapkan nombor urutan pada setiap rekod dan kemudian menggunakan penapis untuk memilih rekod yang diperlukan. Berikut ialah pertanyaan yang diubah suai:
<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>
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Langkau dan Mengambil Kefungsian untuk Paging dengan Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!