博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL 在查询中插入行号--自定义分页的另外一种实现方式
阅读量:7031 次
发布时间:2019-06-28

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

如何在SQL中对行进行动态编号
    如何在SQL中对行进行动态编号,加行号这个问题,在数据库查询中,是经典的问题.
    我把现在的方法整理一下,分享一下技巧吧
    代码基于pubs样板数据库
    在SQL中,一般就这两种方法.
    1.使用临时表
    可以使用select into 创建临时表,在第一列,加入Identify(int,1,1)作为行号,
    这样在产生的临时表中,结果集就有了行号.也是目前效率最高的方法.
    这种方法不能用于视图
    代码:
   
None.gif 
set nocount 
on
None.gif    
select IDentify(
int,
1,
1
'
RowOrder
',au_lname,au_fname 
into #tmp 
from authors
None.gif    
select 
* frm #tmp
None.gif    
drop 
table #tmp
None.gif
    2.使用自连接
    不用临时表,在SQL语句中,动态的进行排序.这种方法用到的连接是自连接,连接关系一般是
    大于,
    代码
    
None.gif
select rank
=
count(
*), a1.au_lname, a1.au_fname
None.gif    
from authors a1 
inner 
join authors a2 
on a1.au_lname 
+ a1.au_fname 
>= a2.au_lname 
+ a2.au_fname
None.gif    
group 
by a1.au_lname, a1.au_fname
None.gif    
order 
by 
count(
*)
None.gif
    运行结果:
    rank au_lname au_fname 
    ----------- ---------------------------------------- -------------------- 
    1 Bennet Abraham
    2 Blotchet-Halls Reginald
    3 Carson Cheryl
    4 DeFrance Michel
    5 del Castillo Innes
    6 Dull Ann
    7 Greene Morningstar
    ... ....
    缺点:
    1.使用自联接,所以该方法不适用于处理大量行。它适用于处理几百行。
    对于大型表,一定要使用索引以避免进行大范围的搜索,或用第一种方法.
    2.不能正常处理重复值。当比较重复值时,会出现不连续的行编号。
    如果不希望出现这种现象,可以在电子表格中插入结果时隐藏排序列,而是使用电子表格编号。
    或用第一种方法
    优点:
    1.这些查询可以用于视图和结果格式设置中

在结果集中插入了行号,现在就可以将结果集合缓存起来,然后使用DataView,加入过滤条件


RowNum>PageIndex*PageSize And RowNum<=(PageIndex+1)*PageSize


就能实现快速的分页,而且不论你的页面数据绑定控件是什么(DataList,DataGrid,还是Repeate都可以)。


如果你使用的是DataGrid,那么建议不要使用这种技术。因为DataGrid的分页效率和它差不多。
本文转自斯克迪亚博客园博客,原文链接:http://www.cnblogs.com/sgsoft/archive/2004/11/11/62591.html,如需转载请自行联系原作者
你可能感兴趣的文章
敏捷AI|NLP技术在宜信业务中的实践「背景篇」
查看>>
布局结束检测工具
查看>>
[MetalKit]21-What's-new-in-graphics-and-games-at-WWDC-2016
查看>>
html2canvas在vue下的巨坑
查看>>
从设计师和开发的角度使用 lottie
查看>>
iOS之自定义tabBar
查看>>
Spring boot学习(三) Spring boot整合mybatis
查看>>
Redux 源码深度解析(附带视频1月14号上传)
查看>>
理解webpack原理,手写一个100行的webpack
查看>>
Node.js & Express 项目基本搭建
查看>>
掌握 MySQL 这 19 个骚操作,效率至少提高3倍
查看>>
【跃迁之路】【744天】程序员高效学习方法论探索系列(实验阶段501-2019.3.6)...
查看>>
用于大数据测试、学习的测试数据
查看>>
Software System Analysis and Design | 1
查看>>
JavaScript函数式编程,真香之组合(一)
查看>>
JavaScript链式调用实例浅析
查看>>
报表没完没了怎么办? | 润乾集算器提效报表开发
查看>>
记一次Hexo迁移
查看>>
RESTful API 中的 Status code 是否要遵守规范
查看>>
第十一天-《企业应用架构模式》-对象-关系行为模式
查看>>