教你在Oracle中实现SELECT TOP N的方法
日期:2008年3月4日 作者: 查看:[大字体 中字体 小字体]-
本文通过举例的方式来教你如何在Oracle中实现SELECT TOP N的方法。
1.在Oracle中实现SELECT TOP N :
由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询。
简单地说,实现方法如下所示:
SELECT 列名1...列名n FROM (SELECT 列名1...列名n FROM 表名 ORDER BY 列名1...列名n) WHERE ROWNUM <= N(抽出记录数) ORDER BY ROWNUM ASC 下面举个例子简单说明一下。
顾客表customer(id,name)有如下数据:
ID NAME 01 first 02 Second 03 third 04 forth 05 fifth 06 sixth 07 seventh 08 eighth 09 ninth 10 tenth 11 last 则按NAME的字母顺抽出前三个顾客的SQL语句如下所示:
SELECT * FROM (SELECT * FROM CUSTOMER ORDER BY NAME) WHERE ROWNUM <= 3 ORDER BY ROWNUM ASC 输出结果为:
ID NAME 08 eighth 05 fifth 01 first 2.在TOP N纪录中抽出第M(M <= N)条记录:
在得到了TOP N的数据之后,为了抽出这N条记录中的第M条记录,我们可以考虑从ROWNUM着手。我们知道,ROWNUM是记录表中数据编号的一个隐藏子段,所以可以在得到TOP N条记录的时候同时抽出记录的ROWNUM,然后再从这N条记录中抽取记录编号为M的记录,即是我们希望得到的结果。
从上面的分析可以很容易得到下面的SQL语句:
SELECT 列名1...列名n FROM ( SELECT ROWNUM RECNO, 列名1...列名nFROM (SELECT 列名1...列名n FROM 表名 ORDER BY 列名1...列名n) WHERE ROWNUM <= N(抽出记录数) ORDER BY ROWNUM ASC ) WHERE RECNO = M(M <= N) 同样以上表的数据为基础,那么得到以NAME的字母顺排序的第二个顾客的信息的SQL语句应该这样写:
SELECT ID, NAME FROM ( SELECT ROWNUM RECNO, ID, NAME FROM (SELECT * FROM CUSTOMER ORDER BY NAME) WHERE ROWNUM <= 3 ORDER BY ROWNUM ASC ) WHERE RECNO = 2 结果则为:
ID NAME 05 fifth - [1] [2] 下一页
-
- 教你在Oracle中实现SELECT TOP N的方法 相关文章:
- ·C语言教程第六章:指针
- ·冰点还原精灵 图文教程
- ·“黑客”教你如何远程控制计算机
- ·从头到尾教你组建小型局域网
- ·大学生暑期农村教育实践报告范文
- ·教你如何调试CISCO路由器(上)
- ·教你学习如何破解XP登陆密码
- ·Excel XP函数实用教程精华集
- ·C语言教程第五章:函数
- ·内存多大才够用?教你合理使用虚拟内存
- 教你在Oracle中实现SELECT TOP N的方法 相关软件
- ·跑跑卡丁车 高手李光漂移教学视频合集
- ·打字高手--文录教学鉴定系统 V8.3
- ·黑客入侵之路(飞鸽教材)
- ·笑傲江湖之日月神教
- ·Photoshop视频实例教程系列电子书 V1.0
- ·罗伯特.清琦的老鼠赛跑理财教学游戏
- ·极品五笔教程 V2007
- ·天才教授2
- ·《猎杀潜航3》完美全图文教程
- ·基础会计学视频教学资料第一章
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·Oracle触发器详细介绍
- ·9istatspack使用手册
- ·Oracle的SQL*PLUS命令的使用大全
- ·VMware下RedHat安装Oracle 9i RAC全攻略
- ·详细介绍ORACLE sqlplus命令
- ·ORACLE备份&恢复案例--ORACLE BACKUP&RESTORE SCHEME
- ·数据库备份与恢复测试(8)
- ·ORACLE UPDATE 语句语法与性能分析的一点看法
- ·Oracle的SQL语句执行效率问题查找与解决方法
- ·请问这是怎么回事??如何解决
- ·ORACLE傻瓜手册长篇连载
- ·用正则表达式函数验证身份证号码合法性
- ·Oracle 游标使用大全
- ·ORA-00257: archiver error. Connect internal only, until freed.
- ·Oracle数据库检查死锁的sql
- ·Oracle SQL精妙SQL语句讲解
- ·Oracle常用的OCI函数
- ·ORA-01157问题解决
- ·oracle中pro*c的学习
- ·有关ORA600错误的参数的解释文档
特别推荐
- ·ORACLE UPDATE 语句语法与性能分析的一点看法
- ·Oracle SQL精妙SQL语句讲解
- ·Oracle环境下APACHE虚拟服务器如何设置
- ·常见Oracle HINT的用法
- ·ORA-00257: archiver error. Connect internal only, until freed.
- ·oracle的update问题
- ·小议索引的使用
- ·oracle产品服务和技术级别介绍,OrACLE服务
- ·Oracle 数据类型
- ·Oracle数据库检查死锁的sql
- ·怎样将冷备份移植到另一台Solaris机器上
- ·Oracle 动态SQL返回单条结果和结果集
- ·手动建立 Oracle9i 数据库
- ·Oracle内存结构(二)----Shared Pool的详细信息
- ·DELPHI 调用 Oracle 存储过程并返回数据集的例子.
- ·关于block中行数据的存储与空间重组三
- ·Sybase及SQL Anywhere SQL语句小结
- ·ORACLE备份&恢复案例--ORACLE BACKUP&RESTORE SCHEME
- ·Oracle ERP 11业务调研报告-AP应付帐
- ·在 Oracle 数据库上构建 .NET 应用程序
