当前位置: 首页 > news >正文

看到大家对数据库分页有研究,也分享个本人的

一个完整的sql语句分解开来,也就分文字段,表名或表连接,条件,排序,分组一共五部分

select a.id,a.name,b.id as bid,b.name as bname

from 表1 a inner join 表2 b

where a.id > 1

order by a.id asc

如上述sql语句分解开来由以下四部分组成

字段部分:a.id,a.name,b.id as bid,b.name as bname

表部分:表1 a inner join 表2 b

条件部分:a.id > 1

还有排序部分 a.id asc

 

本人sql分页存储过程

  1. CREATE    proc [dbo].[pageView]
  2. @pIndex int,--页码
  3. @pSize int,--每页行数
  4. @id varchar(30),--主键ID
  5. @Fields varchar(4000),---字段
  6. @tabName varchar(4000),--表名,和要连接的表以及关系
  7. @where varchar(4000)='',--条件
  8. @sort varchar(4000)=''--排序字段
  9. as
  10. create table #ls
  11. (row int identity(1,1),
  12. aid int
  13. )
  14. create table #ls1
  15. (
  16. row1 int identity(1,1),
  17. row int,
  18. aid int
  19. )
  20. declare @start int
  21. declare @end int
  22. declare @str varchar(8000)
  23. set @end=@pIndex * @pSize
  24. set @start=@end-@pSize+1
  25. set @str='select count('+@id +') as rowcounts from '+@tabName --+ ' where '+@where +' order by '+@sort
  26. if len(@where)> 0
  27.  set @str =@str + ' where '+@where
  28. exec (@str)
  29. set @str='insert into #ls(aid) select top '+str(@end)+' '+@id +' from '+@tabName --+ ' where '+@where +' order by '+@sort
  30. if len(@where)> 0
  31.  set @str =@str + ' where '+@where
  32. if len(@sort)>0
  33.  set @str=@str + ' order by ' +@sort
  34. exec (@str)
  35. insert into #ls1(row,aid)
  36. select #ls.row,#ls.aid from #ls where #ls.row between @start and @end
  37. drop table #ls
  38. --select * from #ls1
  39. set @str='select #ls1.row1,#ls1.row,'+@Fields+' from '+ @tabName + ' join #ls1 on #ls1.aid='+@id +' order by #ls1.row1'
  40. exec(@str)

 

 

 

可以很快的对数据进行分页,并且返回总记录数,每页序号,总序号以及数据来,

 

转载于:https://www.cnblogs.com/qitianshuye/archive/2012/10/25/2739223.html

相关文章:

  • androidalertDialog无法显示按钮的bug
  • 跟我一起学习ASP.NET 4.5 MVC4.0(四)
  • 顶部菜单栏(固定在顶部)
  • 系统安装后的初始环境设置
  • Leveldb -转
  • 陶哲轩实分析 命题7.2.9 绝对收敛判别法
  • NYOJ467 中缀式变后缀式
  • IHttpModule
  • 陶哲轩实分析 命题 7.4.1 证明
  • ASP.NET Cache的一些总结2
  • css样式表在ie6.0中的hack应用
  • 垃圾代码评析——关于《C程序设计伴侣》6.2(一)
  • vlan划分及vlan间通信
  • 数据结构和算法
  • 时钟周期/指令周期/机器周期/总线周期
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • ES6核心特性
  • Invalidate和postInvalidate的区别
  • JavaScript设计模式之工厂模式
  • React-flux杂记
  • SAP云平台里Global Account和Sub Account的关系
  • XML已死 ?
  • 阿里云购买磁盘后挂载
  • 番外篇1:在Windows环境下安装JDK
  • 搞机器学习要哪些技能
  • 基于遗传算法的优化问题求解
  • 微信小程序实战练习(仿五洲到家微信版)
  • 我这样减少了26.5M Java内存!
  • 因为阿里,他们成了“杭漂”
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 优化 Vue 项目编译文件大小
  • 自定义函数
  • 最简单的无缝轮播
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #Z0458. 树的中心2
  • (C语言)字符分类函数
  • (day 12)JavaScript学习笔记(数组3)
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十八)三元表达式和列表解析
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)EOS中账户、钱包和密钥的关系
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET下的多线程编程—1-线程机制概述