如何在SQL中对行进行动态编号
我把现在的方法整理一下,分享一下技巧吧
代码基于pubs样板数据库
在SQL中,一般就这两种方法.
1.使用临时表
可以使用select into 创建临时表,在第一列,加入Identify(int,1,1)作为行号,
这样在产生的临时表中,结果集就有了行号.也是目前效率最高的方法.
这种方法不能用于视图
代码:
select IDentify(int,1,1) 'RowOrder',au_lname,au_fname into #tmp from authors
select * frm #tmp
drop table #tmp
2.使用自连接
不用临时表,在SQL语句中,动态的进行排序.这种方法用到的连接是自连接,连接关系一般是
大于,
代码
from authors a1 inner join authors a2 on a1.au_lname + a1.au_fname >= a2.au_lname + a2.au_fname
group by a1.au_lname, a1.au_fname
order by count(*)
运行结果:
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的分页效率和它差不多。
转载于:https://www.cnblogs.com/aaliujing/archive/2007/01/30/634343.html
如何在SQL中对行进行动态编号相关推荐
- 如何在MyEclipse中显示行数
转载自 如何在MyEclipse中显示行数 如何在MyEclipse中显示行数呢?myeclipse在默认情况下不显示行数时,用户可以自己设置显示行数,行数可以帮助我们方便的查看代码. 首先,打开w ...
- 【Flink】Flink 源码阅读笔记(18)- Flink SQL 中的流和动态表
1.概述 转载:Flink 源码阅读笔记(18)- Flink SQL 中的流和动态表
- sql中日期的比较_如何在SQL中比较日期?
sql中日期的比较 How to compare date in SQL? For example, the 'users' table has a column 'loggin' which is ...
- 如何在SQL中设置自动编号
如何在SQL中设置自动编号 关键词: 自动编号 SQL 设置 Nicholas 课程设计 你创建一个表,把其中一个列(比如"ID")的"标识列&q ...
- 如何在Word中使用MathType为公式编号并引用
如何在Word中使用MathType为公式编号并引用 1.打开Word软件,点击插入,选择对象,在对象对话框中选择MathType 6.0 Equation, 插入想要编辑的公式,如下图 2.Word ...
- SQL Server统计信息以及如何在SQL中执行更新统计信息
This article gives a walk-through of SQL Server Statistics and different methods to perform SQL Serv ...
- 如何在SQL中处理层次型数据
最近在做公司的认证系统,看了开源项目如apache shiro跟spring security,还不知道是自己构建还是用上述代码.最近的考虑点是如何处理层次型数据,因为打算给user构造一个有层次的g ...
- SQL中的行转列和列转行
导读 SQL是IT行业很多岗位都要求具备的一项能力,对于数据岗位而言更是如此,甚至说扎实的SQL基础也往往是入职这些岗位的必备技能.而在SQL面试中,一道出镜频率很高的题目就是行转列和列转行的问题,可 ...
- pl/sql中的赋值运算符_如何在SQL中使用AND / OR运算符?
pl/sql中的赋值运算符 Basically, AND / OR operator is used to retrieving the record from the database. If we ...
最新文章
- 系统架构性能问题诊断及优化思路,纯干货!
- ACM学习历程—UESTC 1226 Huatuo's Medicine(数学)(2015CCPC L)
- 一地鸡毛 OR 绝地反击,2019年区块链发展指南
- 面试官再问高并发,求你把这篇发给他!
- 云服务器Linux jdk安装详解(centos8)
- AI 一体机,满足新时代的新需求
- 大数据中,机器学习和数据挖掘的联系与区别
- (14)Node.js 核心模块—http
- linux 编辑文件乱码,Linux 下 vim 编辑文件,解决中文乱码,设置Tab键空格数
- HDU4628+状态压缩DP
- 地图标识符号大全_创意游戏小程序大全:胡建土楼游戏!带你领略不一样的创意小游戏...
- 10打印机用户干预怎么办_专业分析:爱普生喷墨打印机为什么是行业标杆?
- 程序员又惹祸!B站网站后台工程源码泄露 内含部分用户名密码
- 最全国内外文献检索网站收集
- 从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(四):ORBSLAM评估工具EVO的使用
- 常用学术文献数据库界面及导出参考文献方法
- 忽然想起你,你在远方还好吗!
- win10天干五合工具
- Remove WebCakeDesktop
- 【再聚乌镇】百余家大数据企业齐聚,发布七大榜单两大产业地图,共览大数据产业全景!...
热门文章
- 随机生成关于银行卡号的字典(卡号以6102009开头,后面依次是001,002,...)
- Graph Embedding:word2vec更进一步?
- 数据:以太坊2.0合约余额新增2944 ETH
- SAP License:外购和自产货物视同销售业务理解
- Atlas 2.1.0 实践之编译Atlas-Hive
- 酒店预订、酒店检索、酒店详情、房间预订、订单管理、会员、优惠券、客房预订、高保真原型、酒店app、需求清单、组件规范、架构图、订单通知、服务通知、收藏、客服、搜索、导航、评价、支付、充值、登录、浏览
- 《财富》世界500强想到的
- 20155307 《Java程序设计》课堂实践项目数据库
- 如何解决ado.net entity framework的使用,再别的调用项目中依然正常
- 304441事务管理与并发控制