1

例如,是否可以在 sql server 中获取从第 10 行到第 20 行的行?我的意思是,我通过查询数据库获得了 1800 多行,然后我想以 10 x 10 的形式显示它们。

4

3 回答 3

2

使用 CTE 添加表示每行的行号的列,然后按该列进行过滤。

;WITH MyCTE AS
(
    SELECT    *,
              ROW_NUMBER() OVER(ORDER BY ID) RowNum
    FROM      Table
)

SELECT *
FROM   MyCTE
WHERE  RowNum BETWEEN 10 AND 20
于 2013-08-13T13:45:26.060 回答
1

或者在 SQL 2012+ 中,使用OFFSET\FETCH

....
ORDER BY ...
OFFSET 10 ROWS
FETCH NEXT 10 ROWS;

请参阅http://msdn.microsoft.com/en-us/library/ms188385%28v=SQL.110%29.aspx

于 2013-08-13T13:50:15.460 回答
0

例子:

WITH ResultSetWithRowNumber AS 
(
  SELECT ROW_NUMBER() OVER(ORDER BY MyField1) AS RowNumber, MyField1, MyField2
  FROM MyTable
  WHERE MyField2 = SomeValue
)
SELECT RowNumber, MyField1, MyField2
FROM ResultSetWithRowNumber 
WHERE RowNumber BETWEEN 10 AND 20

MSDN

于 2013-08-13T13:57:02.733 回答