相当于 SQL Server 的 MySQL LIMIT 子句
许多开发人员都在寻找 SQL Server LIMIT 子句的替代方案,因为它仍然是一个值得注意的问题。缺席平台。为了解决这个问题,让我们深入研究可用的解决方法。
对于 SQL Server 2012 及以上版本,作为 ANSI 标准一部分的 OFFSET/FETCH 语法提供了解决方案:
SELECT ID, Name, Price, Image FROM Products ORDER BY ID ASC OFFSET (@start_from - 1) ROWS FETCH NEXT @items_on_page ROWS ONLY;
之前对于 SQL Server 2012,可以采用 ROW_NUMBER() 方法,如此处所述
但是,如果 SQL Server 2012 不可用,可以使用涉及公用表表达式 (CTE) 的解决方法:
;WITH o AS ( SELECT TOP ((@start_from - 1) + @items_on_page) -- Again, this calculation depends on the method used for @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;
这是可以使用的几种方法之一应用以达到预期的结果。查看可用文档并考虑所选方法的效率非常重要。
以上是如何在SQL Server中替换MySQL的LIMIT子句?的详细内容。更多信息请关注PHP中文网其他相关文章!