10

有什么方法可以在 SQL Server 中选择指定的行数?就像我的第一个查询一样,我想获取第 1-5 行,然后是第 6-10 行,然后再往下?提前感谢您的回答:)

4

2 回答 2

22

对于 SQL Server 2005+(设置 @startRow 和 @endRow):

SELECT OrderingColumn 
FROM (
    SELECT OrderingColumn, ROW_NUMBER() OVER (ORDER BY OrderingColumn) AS RowNum
    FROM MyTable
) AS MyDerivedTable
WHERE MyDerivedTable.RowNum BETWEEN @startRow and @endRow

SQL 小提琴示例:http ://sqlfiddle.com/#!3/b4b8c/4

于 2013-06-23T10:46:43.730 回答
9

对于 SQL Server 2012,试试这个(只需设置偏移量)

SELECT  *
FROM     MyTable 
ORDER BY OrderingColumn ASC 
OFFSET  0 ROWS 
FETCH NEXT 5 ROWS ONLY 

OFFSET
指定在开始从查询表达式返回行之前要跳过的行数。

FETCH NEXT:指定在处理子句
后要返回的行数。OFFSET

OFFSET和的定义FETCH NEXT来自这里

查询 1:
偏移量 0 => 1-5

查询 2:
偏移量 5 => 6-10 等。

SQL 小提琴示例:http ://sqlfiddle.com/#!6/b4b8c/2

于 2013-06-23T10:18:33.753 回答