如何获得某些sql结果

时间:2012-04-18 08:37:29

标签: sql-server sql-server-2008

我希望从查询中获取某些sql结果,具体取决于它们的位置,例如,考虑此代码

SELECT * FROM Product ORDER BY id asc

可以返回至少100个左右的结果。

问题是,如何获得前1到10的结果,然后在另一个不同的,单独的查询中,我怎样才能得到11-20的结果甚至得到位于该查询51-60的结果?

2 个答案:

答案 0 :(得分:2)

使用CTE获取行号,然后按行列

进行查询
with your_query as(
   SELECT ROW_NUMBER() OVER(ORDER BY ID ASC) AS Row, *
   FROM Product 
)
select * from your_query
where Row >=5 and Row<=10

答案 1 :(得分:0)

有很多方法,这是使用ROW_NUMBER的一种方法:

DECLARE @StartRow INTEGER = 11
DECLARE @EndRow INTEGER = 20

;WITH Data AS
(
    SELECT TOP(@EndRow) ROW_NUMBER() OVER (ORDER BY id) AS RowNo, *
    FROM Product     
)

SELECT *
FROM Data
WHERE RowNo BETWEEN @StartRow AND @EndRow
ORDER BY Id