SQL server分页的三种方法

农民  论坛元老 | 2023-3-19 17:18:32 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1024|帖子 1024|积分 3072

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、Entity Framework的Linq语句的分页写法:
  1. var datacount  = test.OrderBy(t => t.testID)
  2.                     .Skip(pageSize * (pageIndex - 1))
  3.                     .Take(pageSize).ToList();
复制代码
二、SQL Server分页的SQL语句写法:
  1. select
  2. top (需要显示的条目数) *
  3. from
  4. DBTest
  5. where TestID not in
  6. (select top (需要剔除的条目数) TestID from DBTest)
复制代码
三、SQL Server分页的存储过程写法:

第一种:
  1. create proc proc_TestPage
  2. @PageIndex  int --第几页
  3. @PageSize  int  --每页显示的条数
  4. @pageCount int output        --总的页数,因为需要显示页数,因此是个输出参数
  5. as
  6. declare @datacount int        --总数据条数
  7. select @datacount=count(*) from DBTest--获得总数据条数值并赋给参数
  8. set @pageCount=ceiling(1.0*@datacount/@pageSize)        --获得总页数,并赋给参数
  9. select top(@PageSize) *  from DBTest where TestID not int (select top(@PageSize*(@PageIndex-1)) from DBTest)
  10. select @PageCount=Count(*) from DBTest
复制代码
第二种:
  1. create proc P_Test        --创建存储过程P_Test
  2. @pageSize int,        --每页数据条数
  3. @pageIndex int,        --当前页数(页码)
  4. @pageCount int output        --总的页数,因为需要显示页数,因此是个输出参数
  5. as
  6. declare @datacount int        --总数据条数
  7. select @datacount=count(*) from DBTest --获得总数据条数值并赋给参数
  8. set @pageCount=ceiling(1.0*@datacount/@pageSize)        --获得总页数,并赋给参数
  9. --接下来是获得指定页数据
  10. select * from
  11. (select *,row_number() over(order by TestID ) as num from DBTest) as temp
  12. where num between @pageSize*(@pageIndex-1)+1 and @pageSize*@pageIndex
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表