2

我希望根据查询的位置从查询中获取某些 sql 结果,例如,考虑此代码

SELECT * FROM Product ORDER BY id asc

这可能会返回至少 100 个左右的结果。

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

4

2 回答 2

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
于 2012-04-18T08:43:41.177 回答
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
于 2012-04-18T08:45:34.000 回答