如何在SQL Server中使用Skip功能

时间:2014-03-16 20:35:48

标签: sql sql-server-2012

我已经实现了一个无限滚动并将其与实体一起使用但我想将其转移到SQL Server但不知道如何这是我的实体代码..

     var page = id ?? 1;
        const int recordsPerPage = 10;
        var skipRecords = page * recordsPerPage;

        var listOfProducts = _data.Products.Where(x => x.ProductLine != null); 

         return listOfProducts.
            OrderBy(x=>x.Name).
            Skip(skipRecords).
            Take(recordsPerPage).ToList();

我有其他工作正常我似乎无法实现跳过这就是我对SQL Server的看法

Select top 10  * 
from products 
where ProductLine != null 
order by name

它应该是这样的,如果在第1页那么它应该显示前10(1 x 10),如果在第2页那么它应该显示前20名。

1 个答案:

答案 0 :(得分:2)

在SQL Server 2012中,如果您愿意让客户端维护状态(关于要偏移的行数),则可以使用OFFSET FETCH Clause进行分页。请参阅使用OFFSET和FETCH来限制所引用链接中返回的行

一个例子(取自某些MSDN页面):

--Skip first 10 rows from the sorted result set and return the remaining rows.     
SELECT * FROM MyTable ORDER BY col1 OFFSET 10 ROWS;

--Skip first 10 rows from the sorted resultset and return next 5 rows. 
SELECT * FROM MyTable ORDER BY col1 OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;