Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Meniru Klausa LIMIT MySQL dalam SQL Server?

Bagaimana untuk Meniru Klausa LIMIT MySQL dalam SQL Server?

DDD
DDDasal
2024-12-08 02:29:11835semak imbas

How to Replicate MySQL's LIMIT Clause in SQL Server?

SQL Server bersamaan dengan klausa LIMIT MySQL

Klausa LIMIT MySQL, yang mengehadkan bilangan baris yang dikembalikan oleh pertanyaan, tidak mempunyai persamaan langsung dalam SQL Server. Ini boleh mengecewakan, tetapi terdapat beberapa penyelesaian yang tersedia.

Sintaks OFFSET / FETCH (SQL Server 2012 dan lebih baru)

Dalam SQL Server 2012 dan kemudian, ANSI sintaks OFFSET / FETCH standard boleh digunakan untuk penomboran. Pertanyaan berikut menunjukkan sintaks ini:

SELECT ID, Name, Price, Image 
FROM Products 
ORDER BY ID ASC 
OFFSET (@start_from - 1) ROWS
FETCH NEXT @items_on_page ROWS ONLY;

ROW_NUMBER() kaedah (sebelum SQL Server 2012)

Sebelum SQL Server 2012, kaedah ROW_NUMBER() boleh digunakan untuk mensimulasikan LIMIT klausa:

WITH o AS
(
    SELECT TOP ((@start_from - 1) + @items_on_page)
      RowNum = ROW_NUMBER() OVER (ORDER BY ID ASC)
      /* , other columns */
    FROM Products
)
SELECT 
    RowNum
    /* , other columns */
FROM
    o
WHERE
    RowNum >= @start_from
ORDER BY
    RowNum;

Penyelesaian lain

Selain kaedah yang diterangkan di atas, terdapat pelbagai penyelesaian lain yang tersedia, termasuk menggunakan kursor atau jadual sementara. Walau bagaimanapun, penyelesaian ini secara amnya kurang cekap dan lebih kompleks.

Adalah penting untuk ambil perhatian bahawa Microsoft telah mengakui pengehadan mekanisme penomboran semasa dan telah menyatakan minat untuk menambah sokongan LIMIT asli kepada SQL Server dalam keluaran akan datang.

Atas ialah kandungan terperinci Bagaimana untuk Meniru Klausa LIMIT MySQL 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