select * from 
(select 字段a, 字段b from 表名 order by ID字段 desc) t
where rownum<=10;

解决方案 »

  1.   

    select * from (select col,... from tab order by col desc) where rownum<=10
      

  2.   

    select 字段a, 字段b  from  表名  where  rownum<=10 order by ID字段 desc
      

  3.   

    在sqlserver中用top n,
    在oracle中用rownum间接实现
      

  4.   

    在sqlserver中是可以用top n,但是在oracle中用rownum
    具体代码如下:
    select * from (select 字段a,... from tabname order by 列名 desc) where rownum<=10
      

  5.   

    select * from 
    (select 字段a, 字段b from 表名 order by ID字段 desc) t
    where rownum<=10;
      

  6.   

    回复人: 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;