今天花了两个小时,写了两种分页的算法。

--not in删选法,这种方法查询某个表中前面的数据效率高
create procedure Page_proc
(
@pageSize int, --页数,
@pageIndex int,--页码
@tableName varchar(50),--表名
@mast varchar(50)--表的主键名
)
as
begin
 declare @arg int 
 set @arg=@pageSize*(@pageIndex-1)
 
 --使用动态Sql
 declare @strSql varchar(1000)
 set @strSql='select top('+cast(@pageSize as varchar(20))+') * from '+@tableName
 +' where '+@mast+' not in(select top('+cast(@arg as varchar(20))+') '+@mast+' from '+@tableName+')'
 print @strSql
 exec(@strSql)
end

--正序倒序法,这种方法查询某个表中后面的数据效率高

create proc FenYe
@tableName varchar(50),--表名
@mast varchar(50),--表的主键名
@pageIndex int,--页码
@pageCount int--页数
as
begin
    --求出表的总行数,由于是动态Sql给@RowCount赋值,所以需要用到sp_executesql
    declare @RowCount int
    declare @countSql nvarchar(200)
    set @countSql='select @innerCount=count(*) from '+@tableName

exec sp_executesql @countSql,N'@innerCount int output',@RowCount output
    --print @RowCount
    --求出子查询要查的行数
    declare @Count int
    set @Count=@RowCount-(@pageIndex-1)*@pageCount
    
    --如果查询条件不符合则结束此存储过程
    if(@Count<0)
    return ;
    --使用动态Sql
    declare @strSql varchar(1000)
    set @strSql='select top '+cast(@pageCount as varchar(20))+' * from '+'(select top '+
    cast(@Count as varchar(20))+' * from '+cast(@tableName as varchar(50))+' order by '
    +cast(@mast as varchar(50))+' desc) as temp order by '+cast(@mast as varchar(50))

print @strSql
    exec(@strSql) 
end

这两种是最常用的,第一次发技术随笔,不足之处请大家了解。

使用正序倒叙法查询表前面的数据成功例子:

select * from (select top 10 * from (select top 12 * from A0002 order by ID asc) as temp order by ID desc) as tt order by ID

使用正序倒叙法查询表前面的数据失败例子:

select top 10 * from (select top 12 * from A0002 order by ID asc) as temp order by ID asc

转载于:https://www.cnblogs.com/mxw09/archive/2009/11/25/1610635.html

Sql分页两种常用算法相关推荐

  1. 最短路(两种常用算法!!!)

    https://www.cnblogs.com/chuninggao/p/7301083.html SPFA算法(邻接表):#include <iostream> #include < ...

  2. Windows校验文件哈希hash的两种常用方式

    大家经常都到哪儿去下载软件和应用程序呢?有没想过下载回来的软件.应用程序或资源是否安全呢?在 Windows 10 和 Office 2016 发布当初,很多没权限的朋友都使用第三方网站去下载安装映像 ...

  3. java开发过程中几种常用算法

    排序算法 排序算法中包括:简单排序.高级排序 简单排序 简单排序常用的有:冒泡排序.选择排序.插入排序 冒泡排序代码如下: 1 private static void bubbleSrot(int[] ...

  4. 网页html文档头部声明的两种常用模式

    Html文档头部声明的两种常用模式 第一种,XHTML1.0严格模式,对很多废除的标签不支持,书写要严格遵守W3C的要求,是找虐的好方法: <!DOCTYPE html PUBLIC " ...

  5. Mybatis打印调试sql的两种方式

    问题描述 在使用mybatis进行开发的时候,由于可以动态拼接sql,这样大大方便了我们.但是也有一定的问题,当我们动态sql拼接的块很多的时候,我们要想从*mapper.xml中直接找出完整的sql ...

  6. Silve37.Silverlight和ASP.NET相互传参的两种常用方式(QueryString,Cookie)

    在本节中将讲述Silverlight和ASP.NET页面的相互传参的两种常用方式:Cookie和QueryString.首先我们新建一个名 为SLConnectASP.NET的Silverlight应 ...

  7. Spring Cloud Config采用Git存储时两种常用的配置策略

    由于Spring Cloud Config默认采用了Git存储,相信很多团队在使用Spring Cloud的配置中心时也会采用这样的策略.即便大家都使用了Git存储,可能还有各种不同的配置方式,本文就 ...

  8. ML之回归预测:利用两种机器学习算法(LiR,XGBoost(调优+重要性可视化+特征选择模型))对无人驾驶汽车系统参数(2017年的data,18+2)进行回归预测值VS真实值

    ML之回归预测:利用两种机器学习算法(LiR,XGBoost(调优+重要性可视化+特征选择模型))对无人驾驶汽车系统参数(2017年的data,18+2)进行回归预测值VS真实值 目录 输出结果 1. ...

  9. SQLServer:GUI方式、SQL语句两种方式建立视图和GUI方式设置主键、约束等

    SQLServer:GUI方式.SQL语句两种方式建立视图和GUI方式设置主键.约束等 目录 题目要求 解题流程 (1).建立视图 (2)GUI方式设置主键.约束等 ​ 题目要求 基于表DEPT01和 ...

最新文章

  1. php连接kafka集群,Kafka集群环境配置
  2. 如何对SAP Leonardo上的机器学习模型进行重新训练
  3. (转)细说Cookie
  4. 丢失日志文件的风险与对策
  5. * 将字符串日期时间格式,转为毫秒
  6. linux下的C语言开发(管道通信)
  7. 笨方法学python豆瓣_资料 | 笨办法学Python
  8. 【Java方法】从方法中返回多个值
  9. 三菱plc pwm指令_三菱PLC常用指令汇总,含用法与注释
  10. Laravel框架简介与环境搭建
  11. dmg文件 linux,Linux挂载Mac系统下的dmg文件
  12. python 对接萤石云,录制可播放的MP4视频
  13. codeforce #401 div2 Alyona and Spreadsheet 思维题
  14. 2021-09-10体脂模块做体脂秤方案,体脂秤模块原理解析
  15. s:iterator各种遍历用法
  16. 小米平板1(A0101)官方线刷包_救砖包_解账户锁
  17. unity 骨骼物理 头发 布料模拟
  18. 糖尿病足的病症状都有什么呢?
  19. 牛客网刷题3 小乐乐找最大数
  20. linux caffe运行,linux 安装Caffe

热门文章

  1. selenium API
  2. CentOS7的安装和配置
  3. c语言把一段编码注释,C语言编码规范——着重注意点整理
  4. mysql外键排序规则_mysql创建外键出错(注意数据库表字段排序)
  5. 审计文件服务器的5个核心要素
  6. CDN的安全防护功能
  7. VMware虚拟化上安装F5负载均衡系统(BIG-IP LTM)
  8. 压测学习总结(7)——Jmeter性能测试之脚本增强
  9. Beetl学习总结(3)——高级功能
  10. Mysql学习总结(34)——Mysql 彻底解决中文乱码的问题