1、如何在 Oracle 中实现 SELECT TOP N 的方法本文通过举例的方式来教你如何在 Oracle中实现 SELECT TOP N的方法。 1.在 Oracle中实现 SELECT TOP N : 由于 ORACLE不支持 SELECT TOP语句,所以在 ORACLE中经常是用 ORDER BY跟 ROWNUM的组合来实现 SELECT TOP N的查询。 简单地说,实现方法如下所示: SELECT 列名列名 FROM (SELECT 列名列名 FROM 表名 ORDER BY 列名列名) WHERE ROWNUM M的部分的数据是基本上不会用到的,我们仅仅是为了说明方便而采用。如上
2、所述,则 SQL语句应为: SELECT 列名列名 FROM ( SELECT ROWNUM RECNO, 列名列名FROM (SELECT 列名列名 FROM 表名 ORDER BY 列名列名) WHERE ROWNUM = (M + X - 1)这个范围内,当然最经济的取值就是取等号的时候了。当然最后的抽取条件也不是 RECNO = N了,应该是 RECNO BETWEEN M AND (M + X - 1)了,所以随之而来的 SQL语句则为: SELECT 列名列名 FROM ( SELECT ROWNUM RECNO, 列名列名FROM (SELECT 列名列名 FROM 表名 ORD
3、ER BY 列名列名) WHERE ROWNUM = (M + X - 1)) ORDER BY ROWNUM ASC ) WHERE RECNO BETWEEN M AND (M + X - 1)同样以上面的数据为例,则抽取 NAME的字母顺的第二条记录开始的 3条记录的 SQL语句为: SELECT ID, NAME FROM ( SELECT ROWNUM RECNO, ID, NAME FROM (SELECT * FROM CUSTOMER ORDER BY NAME) WHERE ROWNUM = (2 + 3 - 1) ORDER BY ROWNUM ASC ) WHERE RECNO BETWEEN 2 AND (2 + 3 - 1)结果如下: ID NAME05 fifth01 first04 forth以此为基础,再扩展的话,做成存储过程,将开始记录数以及抽取记录数为参数,就可以轻松实现分页抽取数据。