博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MS SQL 两种分页
阅读量:6361 次
发布时间:2019-06-23

本文共 2118 字,大约阅读时间需要 7 分钟。

------ row number ----------

------ row number ----------declare @pageSize int,@pageIndex intset @pageSize = 20;set @pageIndex = 2select * 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 intset @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 Twhere (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 --总记录数ASDECLARE @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 NetworkCutoverinner 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;  ENDELSE  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 @strSqlCountEXEC SP_EXECUTESQL @strSqlCount,N'@sqlcount INT OUTPUT',@sqlcount OUTPUT  SET @totalRecordCount=@sqlcount  EXEC(@strSql)  GO
View Code

  小技巧:

可增加一个总记录数作为输入参数,查询条件不变的情况,总记录数不变(不再查询总记录数)。第一次查询输入参数为0需要查询总记录数。

转载于:https://www.cnblogs.com/tongyi/p/5129616.html

你可能感兴趣的文章
FeiQ项目
查看>>
跟随我在oracle学习php(19)
查看>>
怎么在Ubuntu上替换ESC键
查看>>
Java定时任务Timer、TimerTask与ScheduledThreadPoolExecutor详解
查看>>
5.Appium 安卓自动化(UIAutomator)
查看>>
222
查看>>
cin 在 Ctrl+Z 或 Ctrl+D 后无法获取输入
查看>>
什么是反向代理?用Nginx如何实现简单反向代理?
查看>>
solaris中几个网络经典命令小结
查看>>
时钟案例
查看>>
修剪草坪 单调队列优化dp BZOJ2442
查看>>
有效获取状态栏(StatusBar)高度
查看>>
jquery 操作DOM 案例
查看>>
sql 高级查询语句总结
查看>>
小技巧css解决移动端ios不兼容position:fixed属性,无需插件
查看>>
android 多线程的实现方式
查看>>
面试---Python中的模块和包是什么?
查看>>
Unity3D 学习教程 10 复制物体
查看>>
Google+ 连接不上的解决办法
查看>>
“.NET技术”使用WCF实现SOA面向服务编程—— 架构设计
查看>>