MS SQL 两种分页
2024-09-14 21:05:32
------ row number ----------
------ row number ---------- declare @pageSize int,@pageIndex int
set @pageSize = 20;set @pageIndex = 2
select * from (
SELECT ROW_NUMBER() OVER(ORDER BY Byod_ZZFP.ID DESC) as rowID
,Byod_ZZFP.* from Byod_ZZFP where 1=1
)T
where (rowID > @pageSize * (@pageIndex - 1) and rowID <= @pageSize * (@pageIndex)) order by ID desc -- CTE表达式 --
declare @pageSize int,@pageIndex int
set @pageSize = 20;set @pageIndex = 2; with T as
(
SELECT ROW_NUMBER() OVER(ORDER BY Byod_ZZFP.ID DESC) as rowID
,Byod_ZZFP.* from Byod_ZZFP where 1=1
)
select * from T
where (rowID > @pageSize * (@pageIndex - 1) and rowID <= @pageSize * (@pageIndex)) order by ID desc
------ max/min ----------
CREATE PROC [dbo].[uspLGetSolutionList]
@pageSize INT, --页码大小
@pageIndex INT, --页码
@strWhere nvarchar(2000)='',
@totalRecordCount INT OUTPUT --总记录数 AS
DECLARE @strSql NVARCHAR(MAX) --sql语句
DECLARE @sqlcount INT --返回总记录
DECLARE @strSqlCount NVARCHAR(MAX) --sql语句1,总记录数语句
DECLARE @tempSql NVARCHAR(MAX) --查询字段
DECLARE @temTableOn NVARCHAR(2000) --表连接及表连接关系
DECLARE @order NVARCHAR(500) --排序 SET @tempSql = ' NetworkCutover.ID '
SET @temTableOn = ' NetworkCutover NetworkCutover
inner join Member Member on NetworkCutover.DutyMember = Member.MemberID
'
SET @strSql = ' ';
SET @order = ' ORDER BY NetworkCutover.ID desc '
IF(@pageIndex <= 1)
BEGIN
SET @strSql = 'SELECT TOP '+STR(@pageSize) + @tempSql +' FROM ' + @temTableOn + ' WHERE 1=1 ' + @strWhere + @order;
END
ELSE
BEGIN
SET @strSql = 'SELECT TOP '+STR(@pageSize)+@tempSql +' FROM '+@temTableOn +' WHERE NetworkCutover.ID < (SELECT MIN(T.ID) FROM (SELECT TOP '+STR(@pageSize*(@pageIndex-1))+' NetworkCutover.ID FROM '+@temTableOn+' WHERE 1=1 '+@strWhere +@order +') T)'+@strWhere+ @order
END
print @strSql
SET @strSqlCount='SELECT @sqlcount=COUNT(*) FROM '+@temTableOn+' WHERE 1=1 '+@strWhere
print @strSqlCount
EXEC SP_EXECUTESQL @strSqlCount,N'@sqlcount INT OUTPUT',@sqlcount OUTPUT
SET @totalRecordCount=@sqlcount
EXEC(@strSql) GO
小技巧:
可增加一个总记录数作为输入参数,查询条件不变的情况,总记录数不变(不再查询总记录数)。第一次查询输入参数为0需要查询总记录数。
最新文章
- icomoon图标的使用
- MySQL Cluster 7.3.5 集群配置实例(入门篇)
- iOS开发小技巧--即时通讯项目:消息发送框(UITextView)高度的变化; 以及UITextView光标复位的小技巧
- PHP高级——抽象类与接口的区别(转)
- UIScrollView循环滚动1
- SpringAOP所支持的AspectJ切点指示器
- 五个免费UML建模工具推荐
- C语言volatile关键字
- CSS制作hover下划线动画
- boost------bind的使用(Boost程序库完全开发指南)读书笔记
- apache2.2 虚拟主机配置详解
- 解决 setOnItemClickListener,setOnScrollListener与setOnTouchListener事件冲突问题
- 使用 Aspose.Cells 实现 excel导入
- svn问题(队列)
- Ext.grid.EditorGridPanel保存
- 重温java基础
- 使用Jmeter进行http接口测试(转载)
- Javascript的算法题目
- 全局eslint不生效的处理
- maven tomcat plugin 踩坑记
热门文章
- CodeForces 540
- windows pip安装 更新
- 【BO】安装BO服务器时,oracle服务端安装ora-12514和12541的问题
- codeforces泛做..
- CentOS利用inotify+rsync实现文件同步
- ZeroMQ接口函数之 :zmq_ctx_new – 创建一个新的ZMQ 环境上下文
- Junit测试 - Spring的配置
- css 温故而知新 slideDown/slideUp 新思路
- #20145205 《Java程序设计》第4周学习总结
- poj1131-Octal Fractions(进制转换)