当前位置:Gxlcms > 数据库问题 > Sql 分页三种方式

Sql 分页三种方式

时间:2021-07-01 10:21:17 帮助过:1人阅读

database Test go use Test go create Table UserInfo( userid int identity(1,1) primary key, username nvarchar(10) not null ) insert into UserInfo values (a11) insert into UserInfo values (a12) insert into UserInfo values (a13) insert into UserInfo values (a14) insert into UserInfo values (a15) insert into UserInfo values (a16) insert into UserInfo values (a17) select * from UserInfo declare @pagesize int declare @currentPage int set @pagesize = 3 set @currentPage = 3 select top (@pagesize) * from Userinfo where userid not in( select top (@pagesize*(@currentPage-1)) userid from UserInfo) --第一页:因为不需要对数据过滤, --所以只取PagSize数量的记录 --第二页:步骤: --1.取前两页的数据 selct top @pagesize *@currentPage --2.过滤掉第一页的数据 --第二种方法:如果ID是连续,完全不用top --直接用id就可以 create table #tempUserInfo ( id int identity(1,1) primary key, userid int not null, username nvarchar(10) not null ) insert into #tempUserInfo select * from UserInfo declare @pagesize int declare @currentPage int set @pagesize = 3 set @currentPage = 2 select * from #tempUserInfo where id between (@currentPage -1)*@pagesize +1 and @pagesize * @currentPage --第三种 --rownumber()函数是sql server2005才有 declare @pagesize int declare @currentPage int set @pagesize = 3 set @currentPage = 3 select * from (select ROW_NUMBER() over (order by userid) as HangHao, * from UserInfo) pageduserinfo where HangHao between (@currentPage -1)*@pagesize +1 and @pagesize * @currentPage --效率问题:第一张绝对比第三种低。 --理论上第二种效率最高,但不推荐用, --要实现的话,一般是用存储过程 --个人推荐:用第三种方式 --SqlServer:ROwNumber --MySql:limit --Oracle :序列:Sequence View Code

 

Sql 分页三种方式

标签:

人气教程排行