LIMIT
的等效值是SET ROWCOUNT
,但如果需要通用分页,最好编写如下查询:
;WITH Results_CTE AS
(
SELECT
Col1, Col2, ...,
ROW_NUMBER() OVER (ORDER BY SortCol1, SortCol2, ...) AS RowNum
FROM Table
WHERE <whatever>
)
SELECT *
FROM Results_CTE
WHERE RowNum >= @Offset
AND RowNum < @Offset + @Limit
这里的优点是,如果您决定更改分页选项(或允许用户这样做),可以对偏移量和限制进行参数化.
Note: @Offset
参数应该使用基于一的索引,而不是正常的基于零的索引.