有什么方法可以在SQL Server中选择指定的行数?就像我的第一个查询一样,我想获得1-5行,然后是6-10行,然后是行?提前感谢您的答案:)
答案 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
子句后要返回的行数。
OFFSET
和FETCH NEXT
的定义来自here。
查询1:
偏移0 => 1-5
查询2:
偏移5 => 6-10等。
SQL小提琴示例:http://sqlfiddle.com/#!6/b4b8c/2