`
lixiamani
  • 浏览: 38874 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ROWNUM(伪行号)如何在ACCESS查询中实现

阅读更多
有如下表
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


http://blog.csdn.net/ACMAIN_CHM/archive/2010/01/03/5125291.aspx
分享到:
评论

相关推荐

    oracle的伪列与分页

    综上所述,Oracle伪列如ROWID和ROWNUM在实际应用中发挥着重要作用,不仅可以帮助优化查询性能,还能轻松实现复杂的分页功能。同时,通过Java JDBC编程,可以进一步提升应用程序与Oracle数据库的集成度和灵活性。

    三种数据库利用SQL语句进行高效果分页

    本文将详细介绍如何在三种不同的数据库系统(SQL Server、Access、Oracle)中实现高效的SQL分页查询。 #### SQL Server 分页查询 SQL Server 支持 `TOP` 关键字,这使得在 SQL Server 中实现分页变得相对简单。...

    三种数据库利用SQL语句进行高效果分页,分页

    在 SQL Server 和 Access 这两个微软数据库中,可以使用 `TOP` 关键字配合 `NOT IN` 子查询来实现分页。以下是一个示例,假设我们要从名为 `components` 的表中获取每页显示 10 条记录,当前页为第 2 页(即显示第 ...

    Oracle分页查询技术

    在Oracle数据库中,实现分页查询是常见的需求之一,尤其是在处理大量数据时。本文将详细介绍如何使用Oracle进行有效的分页查询,并深入探讨其背后的原理及优化策略。 #### 分页查询的基本格式 对于Oracle的分页...

    关于JDBC数据分页跨数据库小结.pdf

    分页SQL语句的构造方式是先创建一个子查询,对所有数据赋予行号(rn),然后在外部查询中选择行号在特定范围内的记录。例如,如果我们需要第一页的数据(假定每页有10条记录),SQL语句会是这样的: ```sql SELECT...

    oracle mysql sqlserver分页

    1. **第一步**:创建一个子查询,在该子查询中使用`ROWNUM`对结果进行编号。 ```sql SELECT ROWNUM r, t1.* FROM Sys_option t1 WHERE ROWNUM (M + N) ``` 其中`M`表示起始记录位置,`N`表示每页显示的记录数...

    SQL Server 2005,SQL Server 2000,MS Access和MySQL中的分页记录

    本文将深入探讨在SQL Server 2005、SQL Server 2000、MS Access和MySQL这四种流行的数据库管理系统中实现分页记录的方法。分页是一种有效的数据呈现方式,它允许用户以更有序和可控的方式浏览大量数据,特别是在Web...

    【ASP.NET编程知识】ASP.NET笔记之 行命令处理与分页详解.docx

    在 ASP.NET 中,开发者可以使用 CommandName="Sort" 来实现排序功能。例如: ```csharp CommandName="Sort" CommandArgument="ID" ``` 二、DataPager 分页 DataPager 是 ASP.NET 中的一个控件,用于实现分页功能。...

    jsp+javabean分页技术.pdf

    这里使用了Oracle的ROWNUM伪列进行分页。 ```java package com.brilliance.mytest83; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; ...

    分页技术原理与实现之Java+Oracle代码实现分页(二)

    在Oracle数据库中,通常通过查询子句的嵌套来实现分页,例如,使用`ROWNUM`伪列和子查询。 一个典型的Oracle分页查询可能如下所示: ```sql SELECT * FROM ( SELECT t.*, ROWNUM rn FROM YourTable t WHERE ...

    如何创建分页的存储过程

    ### 如何创建分页的存储...以上代码展示了如何在一个存储过程中实现复杂的分页逻辑,包括多表联接、条件过滤等操作。这种分页方法不仅可以提高查询效率,还可以有效地管理数据库资源,特别是在处理大量数据时尤为重要。

    Oracle数据库经典学习教程

    - 伪列是Oracle特有的概念,不存储在表中,但在查询时可以使用。 - 如ROWID、ROWNUM等,用于标识行的唯一性或获取结果集中的行号。 - **Oracle函数** - Oracle提供了丰富的内置函数,用于执行数学运算、字符串...

    Oracle自定义数据分页存储过程

    Oracle数据库在处理大数据量时,为了提高查询效率和用户体验,常常需要实现数据的分页显示。自定义数据分页存储过程是一种有效的方法,它能够避免全表扫描,降低数据库资源消耗,同时提供灵活的查询条件。本文将详细...

    C# NPOI导入与导出EXCEL

    在处理Excel数据时,C#程序员常常会借助第三方库来实现导入和导出功能。NPOI就是这样一款强大的库,它允许开发者在C#(如Winform应用)中无缝操作Microsoft Office的Excel文件,而无需安装Office本身。本教程将深入...

    NPOI读取word和excel表格

    例如,`sheet.GetRow(rowNum)`返回指定行号的行,`row.GetCell(cellNum)`返回指定单元格。 3. **NPOI库的其他组件** - **NPOI.Util.dll**:这个库包含了各种实用工具类,帮助开发者进行如日期转换、样式操作等...

    SqlServer 2005 T-SQL Query 学习笔记(3)

    在SQL Server 2005中,T-SQL查询提供了高效的数据分页方法,通过使用窗口函数ROW_NUMBER()。窗口函数允许我们在一个结果集中为每一行分配一个唯一的序列号,从而实现灵活的分页功能。 首先,我们来看一下AD HOC ...

    数据库笔试题汇总(个人总结)

    5. 列出T表第3~5行:由于SQL没有通用的方式来直接获取特定行号的数据,这里给出不同数据库的示例: - SQL Server 或 Access:`SELECT * FROM T ORDER BY ID OFFSET 2 ROWS FETCH NEXT 3 ROWS ONLY` - Oracle:`...

Global site tag (gtag.js) - Google Analytics