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