很多朋友都碰到这个问题,如果在查询中生成一个行号。比如有如下表
tblA   
ID, CNAME, SCORE
1   A001   80
2   B002   71
3   C003   92
4   E004   80
5   D005   85
想按分数来得到名次,如何实现? Access的SQL语句中没有rownum之类的伪列函数。 不过除了采用程序来实现外,你还可以通过下面SQL查询语句来实现

一、按成绩排序,并列者向下顺延(如下没有第三名,并列两个第四)。
ID   CNAME   SCORE    SNO
3    C003    92        1
5    D005    85        2
4    E004    80        4
1    A001    80        4
2    B002    71        5

select a.ID, a.CNAME, a.SCORE,count(*) as SNO
from tblA a inner join tblA b on a.SCORE<=b.SCORE
group by a.ID, a.CNAME, a.SCORE
order by a.SCORE desc

二、按成绩排序,并列者向上顺延(如下没有第四名,并列两个第三)。
ID   CNAME   SCORE    SNO
3    C003    92        1
5    D005    85        2
4    E004    80        3
1    A001    80        3
2    B002    71        5

select a.ID, a.CNAME, a.SCORE,count(b.ID)+1 as SNO
from tblA a left join tblA b on a.SCORE<b.SCORE
group by a.ID, a.CNAME, a.SCORE
order by a.SCORE desc

三、按成绩排序,并列者以学号大者在先。
ID   CNAME   SCORE    SNO
3    C003    92        1
5    D005    85        2
4    E004    80        3
1    A001    80        4
2    B002    71        5

select a.ID, a.CNAME, a.SCORE,count(*) as SNO
from tblA a inner join tblA b on (a.SCORE<b.SCORE or (a.SCORE=b.SCORE and a.ID<=b.ID))
group by a.ID, a.CNAME, a.SCORE
order by 4

以上为标准SQL查询语句。除此之外,在ACCESS环境中还可以用DCOUNT域函数来实现这个排序号。 用DCOUNT域函数来实现的优点是,这个查询仍为可更新查询。但仅在ACCESS环境中可用。如果你用ADO,DAO通过JET-SQL引擎则不可以了。比如你在ASP中。

一、
select id,CNAME,SCORE,DCOUNT('ID','tblA','SCORE>=' & SCORE) as SNO
from tblA
order by 4

二、
select id,CNAME,SCORE,DCOUNT('ID','tblA','SCORE>' & SCORE)+1 as SNO
from tblA
order by 4

三、
select id,CNAME,SCORE,DCOUNT('ID','tblA','SCORE>' & SCORE & ' OR (SCORE=' & SCORE & ' AND ID>=' & ID & ')' ) as SNO
from tblA
order by 4

ROWNUM(伪行号)如何在ACCESS查询中实现。相关推荐

  1. access在sql中横向求和_如何在Access查询中增加总和、平均查询列

    Access的查询对象的操作,是个头痛的问题.尤其是高中信息技术考试中的查询对象的操作,如果涉及到在查询中增加求和或求平均的查询列,那么,可以算是一道难题了. 下面,本文,就给大家总结一下关于这道题, ...

  2. 如何在mysql查询结果集中得到记录行号_获取MySQL查询结果集中记录行号的方法...

    如果需要在查询语句返回的列中包括一列以指示整个结果集中记录的行号,则ISO SQL: 2003标准建议的方法是提供ROW_NUMBER()/ RANK()函数. Oracle可以使用标准方法(版本8i ...

  3. postgres 显示变量_sql - 如何在PostgreSQL查询中声明变量

    sql - 如何在PostgreSQL查询中声明变量 如何声明变量以用于PostgreSQL 8.3查询? 在MS SQL Server中,我可以这样做: DECLARE @myvar INT SET ...

  4. Access查询中如何调用自定义函数

    今天我们给大家分享一下Access查询中调用自定义函数. 在Access的查询中可以直接调用自定义函数,可以帮助我们解决实际工作中一些特殊的查询统计. 接下来,小编用一个网友的问题来教大家调用,我们来 ...

  5. oracle 检索行号,sql使用row_number()查询标记行号

    背景: 在分页功能中,记录需分页显示,需要row_number()函数标记行号. 数据表: 排序之前数据表显示: sql语句: 1 select ROW_NUMBER() over(order by ...

  6. php mysql group by_php – 如何在mysql查询中解决“不在GROUP BY中”错误

    我有两个模型:帖子和喜欢有一对多的关系(所以,一个帖子有很多喜欢). Likings模型还有一个isActive字段,表示喜欢是主动还是被动. 我想获得(排序)前5个帖子,这些帖子已经收到了最大的&q ...

  7. t-sql 使用正则表达式_如何在T-SQL查询中使用可扩展表达式; 性能优势和实例

    t-sql 使用正则表达式 挑战 (The challenge) One of the main tasks of a SQL Server database administrator is per ...

  8. html带提示的行号编辑框,文本框中显示行号[兼容IE/FF浏览器}

    在文本框中显示行号,兼容浏览器ie.ff .b1{height:20px;border:1px solid #7f9db9;line-height:20px; padding:0} input.btn ...

  9. oracle查数据存入数组,如何在SQL查询中使用Oracle关联数组

    ODP.Net公开了将关联数组作为参数从C#传递到Oracle存储过程的能力.除非您尝试在sql查询中使用该关联数组中包含的数据,否则它是一个很好的功能. 原因是它需要上下文切换 – SQL语句需要S ...

最新文章

  1. Linux下gdb调试工具的使用
  2. 接口设计文档_app端接口用例设计方法和测试方法(一)
  3. 实现gps与服务器通信协议,一种自适应GPS通信协议分析算法的设计与实现
  4. 【线上分享】基于人眼主观视觉的画质评价与提升
  5. java enumset_java.util.EnumSet.allOf()方法和实例的学习
  6. python链表排序_链表排序+末尾各种排序
  7. 将字符串中的字符按Z字形排列,按行输出
  8. 数字高程模型和地图——thematicmapping.org译文(一)
  9. AcWing 902. 最短编辑距离(线性DP)
  10. 职业经理人-授权后才是管理的开始
  11. 用AjaxPro实现二级联动
  12. 基于springboot+vue的旅游信息(旅游线路)网站(前后端分离)
  13. 揭秘全球第二大基金公司:先锋基金70人投资团队掌管2万亿美元股票资产
  14. 四阶巴特沃斯低通滤波器设计
  15. linux启动项修复工具,Boot Repair Tool: 可以修复与启动相关的大部分问题
  16. 13.PIO源码详解3-PIO模块(PIO.v)剖析
  17. 自制月球灯第一期之无线充电篇
  18. oracle新建一个自增列,sequence的使用
  19. 【Pytorch】张量复制方法repeat、repeat_interleave和tile
  20. word交叉引用的理解

热门文章

  1. 2021-06-21 小米前端实习电话面试题目
  2. 硬盘哨兵linux版,HDSentinel硬盘哨兵linux版本
  3. redis 主从 哨兵 集群部署
  4. 八字诀 · 十年之约
  5. linux 常用压缩格式,Linux下常用压缩格式的压缩与解压方法
  6. html中加页眉,在打印HTML页面时添加页眉/页脚
  7. A. Vova and Train
  8. 利用ffmpeg+QSV进行视频处理
  9. 2020RT-Thread开发者大会RDC来了~
  10. android微信qq提醒功能,Android用Window实现类似微信、QQ来消息的时候的通知提示