当前位置:酷酷问答>生活百科>Sql 数据库分页

Sql 数据库分页

2024-10-22 19:33:45 编辑:zane 浏览量:540

Sql 数据库分页

的有关信息介绍如下:

Sql 数据库分页

前台缓存分页,如果数据很多的话会变得很慢,而且不方便,所以就在这里把数据库的分页进行集合。

首先 建一张测试表

create 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.过滤撤哄掉第一页的数据@pagesize*(@currentPage-1)

--第二种方法:如果ID是连续,完全不用top

--直接用id就可以

--建表格 数据从UserInfo拿过来

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

--效率问题:第一张绝对比第三种低。

--理论上第二种效率最高,但不推荐用,

--要实现的话,一般是用存储过程

个人推荐第三种

版权声明:文章由 酷酷问答 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.kukuwd.com/life/90311.html
热门文章