在sql中选择特定的行号

Bre*_*lyn 9 sql sql-server

有什么办法可以在SQL Server中选择指定的行数吗?就像我的第一个查询一样,我希望获得1-5行,然后是6-10行,然后是行?提前谢谢你的答案:)

Fab*_*ler 20

对于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
Run Code Online (Sandbox Code Playgroud)

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


Fab*_*ler 9

对于SQL Server 2012,请尝试此操作(只需设置偏移量)

SELECT  *
FROM     MyTable 
ORDER BY OrderingColumn ASC 
OFFSET  0 ROWS 
FETCH NEXT 5 ROWS ONLY 
Run Code Online (Sandbox Code Playgroud)

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

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

的定义OFFSETFETCH NEXT来自这里.

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

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

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