Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Penomboran dengan OFFSET dan FETCH atau ROW_NUMBER dalam SQL Server?

Bagaimana untuk Melaksanakan Penomboran dengan OFFSET dan FETCH atau ROW_NUMBER dalam SQL Server?

Patricia Arquette
Patricia Arquetteasal
2025-01-10 21:02:42329semak imbas

How to Implement Pagination with OFFSET and FETCH or ROW_NUMBER in SQL Server?

Pelaksanaan halaman SQL: menggunakan kata kunci SKIP dan TAKE

Penerangan Masalah

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".

Jawapan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn