select * from (select col,... from tab order by col desc) where rownum<=10
select 字段a, 字段b from 表名 where rownum<=10 order by ID字段 desc
在sqlserver中用top n, 在oracle中用rownum间接实现
在sqlserver中是可以用top n,但是在oracle中用rownum 具体代码如下: select * from (select 字段a,... from tabname order by 列名 desc) where rownum<=10
select * from (select 字段a, 字段b from 表名 order by ID字段 desc) t where rownum<=10;
回复人: bluelamb(bluelamb) ( ) 信誉:100 2004-11-4 11:57:21 得分: 0 select 字段a, 字段b from 表名 where rownum<=10 order by ID字段 desc这个是不能够实现楼主意图的。因为rownum的计数实际上是在order by 之前的,所以如果你这样写的话,实际上oracle执行的是 先从表中随机取出10条数据,然后进行排序。可以用explain它的执行计划看看。所以,正确的写法应该和上上上上上的一样:select * from (select 字段a, 字段b from 表名 order by ID字段 desc) t where rownum<=10;
在oracle中用rownum间接实现
具体代码如下:
select * from (select 字段a,... from tabname order by 列名 desc) where rownum<=10
(select 字段a, 字段b from 表名 order by ID字段 desc) t
where rownum<=10;
(select 字段a, 字段b from 表名 order by ID字段 desc) t
where rownum<=10;