在SQL Server 2012中,支持ANSI标准
OFFSET/
FETCH语法。我在博客上发表了这篇文章,这是官方文档(这是的扩展
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()方法。请参阅本文和后续讨论。如果您不在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) FROM Products)SELECt RowNum FROM oWHERe RowNum >= @start_fromORDER BY RowNum;
还有很多其他方法可以为这只猫蒙皮,这可能不是最有效的方法,但是从语法角度来说可能是最简单的方法。我建议查看我发布的链接以及对该问题的评论中指出的重复建议。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)