由于Sql Server没有提供rownumber, 也没有提供类似limit的语法。
但是有rowcount ,ok,我们就用这个。
1.数据表需要有一个唯一的字段。当然要使用rowcount,那么就必须要有ID了,否则就需要创建临时表来解决这个问题了.
2.
采用:
set rowcount 100; //这里的100 ,是排除掉前面的100行 ,100 = @pagesize * (@currentPage - 1) + 1
select @lastid = id from tabledemo [where ... group by ....] order by id.
注意: 这里是oder by id ,自然是升序排列。
3.
set rowcount 20; // 20 = @pagesize
select * from tabledemo where id >= @lastid order by id ;
注意:这里的必须要有order by id,且排序方式必须跟前面的一致。否则取出来的数据可能不一致。
这样就实现了分页。
目前采用rowcount的分页方式,效率是最高的。
参见codeproject上的评测文章:
http://www.codeproject.com/KB/aspnet/PagingLarge.aspx
别人封装好的sp: