首页 > 数据库 >SQL分页的几种写法

SQL分页的几种写法

时间:2022-10-22 10:36:40浏览次数:50  
标签:分页 TOP rowcount SQL currentpage 写法 id SELECT

1.分页写法一:(利用Not In和SELECT TOP分页)

SELECT TOP 页大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP (页大小*(页数-1)) id
FROM 表
ORDER BY id))
ORDER BY ID

2.分页写法二:(利用ID大于多少和SELECT TOP分页))

SELECT TOP 页大小 *
FROM TestTable
WHERE (ID >=
(SELECT MAX(id)
FROM (SELECT TOP (页大小*(页数-1)+1) id
FROM 表
ORDER BY id) AS T))
ORDER BY ID

3.分页写法三:(利用SQL的游标存储过程分页)

create  procedure SqlPager
@sqlstr nvarchar(4000), –查询字符串
@currentpage int, –第N页
@pagesize int –每页行数
as
set nocount on
declare @P1 int, –P1是游标的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 总页数–,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off

  1. 分页写法四(利用rownumber分页)(推荐)

set statistics time on;
-- 分页查询(通用型)
select top pageSize *
from (select row_number()
over(order by sno asc) as rownumber,*
from student) temp_row
where rownumber>((pageIndex-1)*pageSize);

  1. 分页写法五(offset fetch next分页)(高版本的SQL推荐)

set statistics time on;
-- 分页查询(通用型)
select * from student
order by sno
offset ((@pageIndex-1)*@pageSize) rows
fetch next @pageSize rows only;


标签:分页,TOP,rowcount,SQL,currentpage,写法,id,SELECT
From: https://blog.51cto.com/u_10511717/5785668

相关文章

  • 通过SQL Server执行计划看懂几种方式查找数据性能
    [TableScan]表扫描(最慢),对表记录逐行进行检查[ClusteredIndexScan]聚集索引扫描(较慢),按聚集索引对记录逐行进行检查[IndexScan]索引扫描(普通),根据索引滤出部分数据在进......
  • MySQL 视图 View
    视图View视图是一个虚拟表,是sql的查询结果,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成。视图的数据变化会影响到基表,基表......
  • 101-mysql left join 一对多,取右表最新一条记录
    SELECTa.*,e.userNameaschatUser,e.contentascontent,e.chatTimeaschatTimeFROM......
  • mysql 中datetime类型相减结果是多少秒
    1.mysql中datetime类型相减  结果是多少秒  2.java中java.util.date类型相减是毫秒  ......
  • sql left join,right join,inner join,union,union all,outer apply,cross apply
    leftjoin:select*fromtable1aleftjointable2 bona.id=b.id     查询结果包含table1全部,table2的id=table1的id部分。如果table2有多条,则table1会重......
  • mysql for linux :安装及删除
    官网:https://downloads.mysql.com/archives/community/在官网找到适合自己版本的mysql,个人选择的是5.7.27、Redhat操作系统、操作系统版本7,X86平台64位。可以直接下载,也......
  • 安装MySQL数据库
    安装1.使用wget命令安装MySQL:https://www.cnblogs.com/zull123/p/10038299.html#yum安装出现"nomoremirrorstotry"时解决方法:yumcleanall;yummakecache;yum......
  • SQL开发基础
    注:数据库类似文件夹!数据表类似文件!就像一个文件夹里可以有多个文件一样,一个数据库可以有多张表。SQL分类DDL(create、alter、drop)DCL(gtant、deny、revoke)DML(select、ins......
  • 测试项目(五):数据分页查询(后端接口)
    好家伙, 这里我们必须考虑:当数据库表单数据过多时,我们必须增加分页展示想想上百条数据一页展示完,那么可能找不到我要的那条数据了 我们前后端分开处理:本篇介绍完成后......
  • 解决MySQL报错: Cannot add or update a child row: a foreign key constraint fails…
    今天在做数据库项目时,给表添加外键,但是怎么运行都会报这个错误,Cannotaddorupdateachildrow:aforeignkeyconstraintfails(rongyao.news_detail,CONSTRAINTnew......