1

如何返回一定数量的行,即从 SELECT 查询顶部开始的一定数量的行?

我的意思是,假设我有一个有 1000 行的表。假设我想要前 50 行,然后我想要第二个 50 行,然后是第三个 50 行,依此类推。我知道 TOP 或 LIMIT 会限制返回的行数,但我不确定如何告诉 SQL 从返回的表中的某个点获取行。

4

3 回答 3

1

在 Sql server 中,你可以利用ROW_NUMBER()函数来做你想做的事情

SELECT ROW_NUMBER() OVER(ORDER BY col3 DESC) AS Row, 
    col1, col2, col3
FROM tablename

简而言之

WITH ctetable AS
(
    SELECT ROW_NUMBER() OVER(ORDER BY col3 DESC) AS RowNumber , 
        col1, col2, col3
    FROM tablename 
) 
SELECT * 
FROM ctetable 
WHERE RowNumber BETWEEN 1 AND 50;
于 2012-11-28T06:06:31.737 回答
0
SELECT TOP 50 * FROM 
(
    SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) AS [Index], * FROM MyTable
) AS A
WHERE A.[Index] BETWEEN @StartIndex AND @EndIndex
于 2012-11-28T06:07:11.850 回答
0
;With CTE as(SELECT ROW_NUMBER() OVER(ORDER BY (select 0)) AS rno, * FROM MyTable)

select * from CTE where rno between start and end;
于 2012-11-28T06:08:03.017 回答