Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melaksanakan Paging Pertanyaan dalam SQL Server Menggunakan OFFSET dan FETCH NEXT, dan Alternatif untuk Versi Lama?

Bagaimana untuk Melaksanakan Paging Pertanyaan dalam SQL Server Menggunakan OFFSET dan FETCH NEXT, dan Alternatif untuk Versi Lama?

DDD
Lepaskan: 2025-01-10 20:57:41
asal
445 orang telah melayarinya

How to Implement Query Paging in SQL Server Using OFFSET and FETCH NEXT, and Alternatives for Older Versions?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan