如何在SQL中对行进行动态编号,加行号这个问题,在数据库查询中,是经典的问题.
    我把现在的方法整理一下,分享一下技巧吧
    代码基于pubs样板数据库
    在SQL中,一般就这两种方法.
    1.使用临时表
    可以使用select into 创建临时表,在第一列,加入Identify(int,1,1)作为行号,
    这样在产生的临时表中,结果集就有了行号.也是目前效率最高的方法.
    这种方法不能用于视图
    代码:

 set nocount on
    select IDentify(int,1,1) 'RowOrder',au_lname,au_fname into #tmp from authors
    select * frm #tmp
    drop table #tmp

2.使用自连接
    不用临时表,在SQL语句中,动态的进行排序.这种方法用到的连接是自连接,连接关系一般是
    大于,
    代码

select rank=count(*), a1.au_lname, a1.au_fname
    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中对行进行动态编号相关推荐

  1. 如何在MyEclipse中显示行数

    转载自  如何在MyEclipse中显示行数 如何在MyEclipse中显示行数呢?myeclipse在默认情况下不显示行数时,用户可以自己设置显示行数,行数可以帮助我们方便的查看代码. 首先,打开w ...

  2. 【Flink】Flink 源码阅读笔记(18)- Flink SQL 中的流和动态表

    1.概述 转载:Flink 源码阅读笔记(18)- Flink SQL 中的流和动态表

  3. sql中日期的比较_如何在SQL中比较日期?

    sql中日期的比较 How to compare date in SQL? For example, the 'users' table has a column 'loggin' which is ...

  4. 如何在SQL中设置自动编号

    如何在SQL中设置自动编号 关键词: 自动编号    SQL    设置    Nicholas    课程设计 你创建一个表,把其中一个列(比如"ID")的"标识列&q ...

  5. 如何在Word中使用MathType为公式编号并引用

    如何在Word中使用MathType为公式编号并引用 1.打开Word软件,点击插入,选择对象,在对象对话框中选择MathType 6.0 Equation, 插入想要编辑的公式,如下图 2.Word ...

  6. SQL Server统计信息以及如何在SQL中执行更新统计信息

    This article gives a walk-through of SQL Server Statistics and different methods to perform SQL Serv ...

  7. 如何在SQL中处理层次型数据

    最近在做公司的认证系统,看了开源项目如apache shiro跟spring security,还不知道是自己构建还是用上述代码.最近的考虑点是如何处理层次型数据,因为打算给user构造一个有层次的g ...

  8. SQL中的行转列和列转行

    导读 SQL是IT行业很多岗位都要求具备的一项能力,对于数据岗位而言更是如此,甚至说扎实的SQL基础也往往是入职这些岗位的必备技能.而在SQL面试中,一道出镜频率很高的题目就是行转列和列转行的问题,可 ...

  9. pl/sql中的赋值运算符_如何在SQL中使用AND / OR运算符?

    pl/sql中的赋值运算符 Basically, AND / OR operator is used to retrieving the record from the database. If we ...

最新文章

  1. 系统架构性能问题诊断及优化思路,纯干货!
  2. ACM学习历程—UESTC 1226 Huatuo's Medicine(数学)(2015CCPC L)
  3. 一地鸡毛 OR 绝地反击,2019年区块链发展指南
  4. 面试官再问高并发,求你把这篇发给他!
  5. 云服务器Linux jdk安装详解(centos8)
  6. AI 一体机,满足新时代的新需求
  7. 大数据中,机器学习和数据挖掘的联系与区别
  8. (14)Node.js 核心模块—http
  9. linux 编辑文件乱码,Linux 下 vim 编辑文件,解决中文乱码,设置Tab键空格数
  10. HDU4628+状态压缩DP
  11. 地图标识符号大全_创意游戏小程序大全:胡建土楼游戏!带你领略不一样的创意小游戏...
  12. 10打印机用户干预怎么办_专业分析:爱普生喷墨打印机为什么是行业标杆?
  13. 程序员又惹祸!B站网站后台工程源码泄露 内含部分用户名密码
  14. 最全国内外文献检索网站收集
  15. 从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(四):ORBSLAM评估工具EVO的使用
  16. 常用学术文献数据库界面及导出参考文献方法
  17. 忽然想起你,你在远方还好吗!
  18. win10天干五合工具
  19. Remove WebCakeDesktop
  20. 【再聚乌镇】百余家大数据企业齐聚,发布七大榜单两大产业地图,共览大数据产业全景!...

热门文章

  1. 随机生成关于银行卡号的字典(卡号以6102009开头,后面依次是001,002,...)
  2. Graph Embedding:word2vec更进一步?
  3. 数据:以太坊2.0合约余额新增2944 ETH
  4. SAP License:外购和自产货物视同销售业务理解
  5. Atlas 2.1.0 实践之编译Atlas-Hive
  6. 酒店预订、酒店检索、酒店详情、房间预订、订单管理、会员、优惠券、客房预订、高保真原型、酒店app、需求清单、组件规范、架构图、订单通知、服务通知、收藏、客服、搜索、导航、评价、支付、充值、登录、浏览
  7. 《财富》世界500强想到的
  8. 20155307 《Java程序设计》课堂实践项目数据库
  9. 如何解决ado.net entity framework的使用,再别的调用项目中依然正常
  10. 304441事务管理与并发控制