加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server实现分页的过程是啥

发布时间:2023-05-10 10:55:53 所属栏目:MsSql教程 来源:
导读:很多朋友都对“SQL Server实现分页的过程步骤是什么”的内容比较感兴趣,对此小编整理了相关的知识分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获,那么感兴趣的朋友就继续往下看吧!一、创建

很多朋友都对“SQL Server实现分页的过程步骤是什么”的内容比较感兴趣,对此小编整理了相关的知识分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获,那么感兴趣的朋友就继续往下看吧!

一、创建测试表

CREATE TABLE [dbo].[Student](

[id] [int] NOT NULL,

[name] [nvarchar](50) NULL,

[age] [int] NULL)

二、创建测试数据

declare @i int

set @i=1

while(@i<10000)

begin

insert into Student select @i,left(newid(),7),@i+12

set @i += 1

end

三、测试

1、使用top关键字

top关键字表示跳过多少条取多少条

declare @pageCount int --每页条数

declare @pageNo int --页码

declare @startIndex int --跳过的条数

set @pageCount=10

set @pageNo=3

set @startIndex=(@pageCount*(@pageNo-1))

select top(@pageCount) * from Student

where ID not in

(

select top (@startIndex) ID from Student order by id

) order by ID

2、使用row_number()函数

declare @pageCount int --页数

declare @pageNo int --页码

set @pageCount=10

set @pageNo=3

--写法1:使用between and

select t.row,* from

(

select ROW_NUMBER() over(order by ID asc) as row,* from Student

) t where t.row between (@pageNo-1)*@pageCount+1 and @pageCount*@pageNo

--写法2:使用 “>”运算符

select top (@pageCount) * from

(

select ROW_NUMBER() over(order by ID asc) as row,* from Student

) t where t.row >(@pageNo-1)*@pageCount

--写法3:使用and运算符

select top (@pageCount) * from

(

select ROW_NUMBER() over(order by ID asc) as row,* from Student

) t where t.row >(@pageNo-1)*@pageCount and t.row<(@pageNo)*@pageCount+1

四、总结

ROW_NUMBER()只支持sql2005及以上版本,top有更好的可移植性,能同时适用于sql2000及以上版本、access。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章