在sql中选择特定的行号

时间:2013-06-23 10:14:05

标签: sql sql-server

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

2 个答案:

答案 0 :(得分:18)

对于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

答案 1 :(得分:8)

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

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

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

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

OFFSETFETCH NEXT的定义来自here

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

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

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