sql server:四种分页方式

妖狐艹你老母 2022-02-24 06:42 320阅读 0赞

第一种:ROW_NUMBER() OVER()方式

  1. select * from (
  2.     select *, ROW_NUMBER() OVER(Order by ArtistId ) AS RowId from ArtistModels
  3.   ) as b
  4. where RowId between 10 and 20
  5.   ---where RowId BETWEEN 当前页数-1*条数 and 页数*条数---

执行结果是:

第二种方式:offset fetch next方式(SQL2012以上的版本才支持:推荐使用 )

  1. select * from ArtistModels order by ArtistId offset 4 rows fetch next 5 rows only
  2. --order by ArtistId offset 页数 rows fetch next 条数 rows only ----

执行结果是:

第三种方式:–top not in方式 (适应于数据库2012以下的版本)

  1. select top 3 * from ArtistModels
  2. where ArtistId not in (select top 15 ArtistId from ArtistModels)
  3. ------where Id not in (select top 条数*页数 ArtistId from ArtistModels)

执行结果:

第四种方式:用存储过程的方式进行分页

  1. CREATE procedure page_Demo
  2. @tablename varchar(20),
  3. @pageSize int,
  4. @page int
  5. AS
  6. declare @newspage int,
  7. @res varchar(100)
  8. begin
  9. set @newspage=@pageSize*(@page - 1)
  10. set @res='select * from ' +@tablename+ ' order by ArtistId offset '+CAST(@newspage as varchar(10)) +' rows fetch next '+ CAST(@pageSize as varchar(10)) +' rows only'
  11. exec(@res)
  12. end
  13. EXEC page_Demo @tablename='ArtistModels',@pageSize=3,@page=5

执行结果:

ps:今天搞了一下午的分页,通过上网查资料和自己的实验,总结了四种分页方式供大家参考,有问题大家一起交流学习

发表评论

表情:
评论列表 (有 0 条评论,320人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SQL SERVER 的几方式

    背景: 在日常工作中,经常需要解决分页的问题,这也是真分页必须要做的一件事情。经常查询,发现有很多的分页方法,为了了解他们的分页效率我做了一个实验。当然,跟自己的服务器性