SQL Server 2012 podporuje standard ANSI OFFSET
/ FETCH
syntax. na blogu toto
a zde je oficiální dokument (toto je rozšíření k ORDER BY
). Vaše syntaxe převedená pro SQL Server 2012 by byla:
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;
Předtím musíte použít různá řešení, včetně ROW_NUMBER()
metoda. Viz tento článek
a následná diskuse
. Pokud nepoužíváte SQL Server 2012, nemůžete použít standardní syntaxi nebo nestandardní LIMIT
MySQL ale můžete použít podrobnější řešení, například:
;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;
Existuje mnoho dalších způsobů, jak stáhnout tuto kočku z kůže, tento pravděpodobně nebude nejúčinnější, ale z hlediska syntaxe je pravděpodobně nejjednodušší. Doporučuji zkontrolovat odkazy, které jsem zveřejnil, a také duplicitní návrhy uvedené v komentářích k otázce.