相當於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中文網其他相關文章!