SQL Server 2012では、ANSI標準OFFSET
/FETCH
の構文がサポートされています。 I blogged about thisここではthe official docです(これはORDER BY
の拡張です)。 SQL Server 2012のために変換あなたの構文は次のようになります。
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;
その前に、あなたはROW_NUMBER()
方法など、さまざまな回避策を使用する必要があります。 this articleおよびfollow-on discussionを参照してください。あなたは、SQL Server 2012の上にない場合は、標準の構文または使用することはできませんMySQLのLIMIT
非標準しかし、あなたのような、より詳細なソリューションを使用することができます。この猫を肌にする、他の多くの方法があります
;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;
、これは最も効率的ではありそうにないが、シンタックスの方がおそらく最もシンプルです。私は、私が投稿したリンクだけでなく、質問にコメントに記載されている重複した提案を検討することをお勧めします。
見た目は合法です。エラーは何ですか? –
http://stackoverflow.com/questions/3128043/limit-results-on-sql-request – tim
http://stackoverflow.com/questions/3128043/limit-results-on-sql-request – tim