Oracle,Top-N 查询,分页查询

Oracle,Top-N 查询,分页查询

ID:37712916

大小:41.00 KB

页数:4页

时间:2019-05-29

Oracle,Top-N 查询,分页查询_第1页
Oracle,Top-N 查询,分页查询_第2页
Oracle,Top-N 查询,分页查询_第3页
Oracle,Top-N 查询,分页查询_第4页
资源描述:

《Oracle,Top-N 查询,分页查询》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1、在ORACLE中实现SELECTTOPN由于ORACLE不支持SELECTTOP语句,所以在ORACLE中经常是用orderby跟rownum的组合来实现SELECTTOPN的查询。实现方法如下所示:SELECT 列名1...列名n FROM(SELECT 列名1...列名n FROM表名orderby列名1...列名n)WHERErownum<=N//抽出记录数orderbyrownumasc;例题:顾客表customer(id,name)有如下数据:IDNAME01first02Second03third04forth05fifth06sixth07seventh08eighth0

2、9ninth则按NAME的字母顺序抽出前三个顾客的SQL语句如下所示:SELECT*FROM(SELECT*FROMCUSTOMERorderbyNAME)WHERErownum<=3orderbyrownumASC;输出结果为:IDNAME08eighth05fifth01first2、抽出按某种方式排序的记录集中的第N条记录rownum是记录表中数据编号的一个隐藏子段,所以在得到TOPN条记录的时候同时抽出记录的rownum,然后再从这N条记录中抽取最后一条记录。实现方法如下所示:SELECT列名1...列名nFROM(SELECTrownumRECNO,列名1...列名nFROM(S

3、ELECT列名1...列名nFROM表名ORDERBY列名1...列名n)WHERErownum<=N//抽出记录数orderbyrownumASC)WHERERECNO=N;例题:同样以上表的数据为基础,得到以NAME的字母排序的第二个顾客的信息的SQL语句:SELECTID,NAMEFROM(SELECTrownumRECNO,ID,NAMEFROM(SELECT*FROMCUSTOMERorderbyNAME)whererownum<=2orderbyrownumASC)WHERERECNO=2;结果则为:IDNAME05fifth3、抽出按某种方式排序的记录集中的第M条记录开始的X

4、条记录当我们需要抽取多条记录的时候,此时在2中的N的取值应该是在N>=(M+X-1)这个范围内,当然最后的抽取条件应该是RECNObetweenMand(M+X-1)之间。SELECT列名1...列名nFROM(SELECTrownumRECNO,列名1...列名nFROM(SELECT列名1...列名nFROM表名orderby列名1...列名n)WHERErownum<=N//N=(M+X-1)orderbyrownumASC)WHERERECNObetweenMand(M+X-1);例题:同样以上面的数据为例,抽取NAME的字母顺序的第2条记录开始的3条记录:SELECTID,NAM

5、EFROM(SELECTrownumRECNO,ID,NAMEFROM(SELECT*FROMCUSTOMERorderbyNAME)WHERErownum<=(2+3-1)orderbyrownumASC)WHERERECNObetween2and(2+3-1);结果如下:IDNAME05fifth01first04forth以此为基础,再扩展的话,做成存储过程,将开始记录数以及抽取记录数作为参数,就可以轻松实现分页抽取数据。Oracle分页查询1.利用分析函数row_number()over(partitionbycol1orderbycol2)比如想取出100-150条记录,按照tn

6、ame排序selecttname,tabtypefrom(selecttname,tabtype,row_number()over(orderbytname)rnfromtab)wherernbetween100and150;2.直接使用rownum虚列selecttname,tabtypefrom(selecttname,tabtype,rownumrnfromtabwhererownum<=150)wherern>=100;使用序列不能基于整个记录集合进行排序,如果指定了orderby子句,排序的的是选出来的记录集的排序。经过测试,在100万条数据的表中,检索数据的时候,方法2的速度要

7、比方法1要快的.==============================================================================在构建自定义搜索引擎时,开发人员常遇到的一个问题是实现某种类型的分页功能;也就是说,允许用户提交一个返回很多行数据的查询,但是只显示前20条。在用户点击一个链接时,下20条或者前20条数据会从数据库应用程序中取出。数据库访问存在的一个问题是来自Web站

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。