您的位置:首页 > 数据库

使用sql语句的两种分页方法

2015-10-19 15:12 537 查看

使用存储过程

1.使用top方法

<pre name="code" class="sql">--一条一条的访问数据库
Create procedure data_page
@num int,--每页的信息数
@i int--接受是第几页
as
declare @n int
--存储总信息数
set @n=(select COUNT(*) from people)
if(@i<=@n/@num)
begin
select top (@num) * from people
where P_id in(select top (@i*@num) p_id from people order by p_id asc)
order by p_id desc
end
--如果最后一张不是完整的一页
--进入一面的判断
if(@i*@num-@n>0)
select top (@n-(@i-1)*@num) *
from people order by p_id desc
go
exec data_page 5,1
--删除存储过程
drop procedure data_page




2.使用sql里面的内置函数row_number(可以生成行号)

<pre name="code" class="sql">--内置函数ROW_NUMBER()的使用
--给每行加编号
select *,row_number() over(order by p_id) as rows from people
--按组进行编号,以5行为一组
select *,((ROW_NUMBER() over(order by p_id)-1)/5 as rows from people
go
--利用编号进行分页

create procedure proSplitPage
@peerPageRows int,--每页要显示的行数
@indexPage int--接受要显示第几页
as

select p_id,p_name,p_pwd,p_age,register_time from
(select *,(ROW_NUMBER() over(order by p_id))-1)/@peerPageRows  as rows
from people) as tb where rows=@indexPage-1



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息