Di SQL Server 2012, ada dukungan untuk standar ANSI OFFSET
/ FETCH
sintaksis. Saya membuat blog tentang ini
dan ini dokumen resmi (ini adalah ekstensi untuk ORDER BY
). Sintaks Anda yang dikonversi untuk SQL Server 2012 adalah:
SELECT ID, Name, Price, Image
FROM Products
ORDER BY ID ASC
OFFSET (@start_from - 1) ROWS -- not sure if you need -1
-- because I don't know how you calculated @start_from
FETCH NEXT @items_on_page ROWS ONLY;
Sebelum itu, Anda perlu menggunakan berbagai solusi, termasuk ROW_NUMBER()
metode. Lihat artikel ini
dan diskusi lanjutan
. Jika Anda tidak menggunakan SQL Server 2012, Anda tidak dapat menggunakan sintaks standar atau LIMIT
non-standar MySQL tetapi Anda dapat menggunakan solusi yang lebih bertele-tele seperti:
;WITH o AS
(
SELECT TOP ((@start_from - 1) + @items_on_page)
-- again, not sure if you need -1 because I
-- don't know how you calculated @start_from
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;
Ada banyak cara lain untuk menguliti kucing ini, ini tidak mungkin yang paling efisien tetapi dari segi sintaks mungkin paling sederhana. Saya sarankan untuk meninjau tautan yang saya posting serta saran duplikat yang dicatat dalam komentar untuk pertanyaan tersebut.