select * from emp order by sal desc where rownum<6;

解决方案 »

  1.   

    多谢兄弟,不过order by sal 应该放到where的后面.
      

  2.   

    oracle是先取rownum然后再order by排序,因此应该是select *
    from
      (
         select rownum "ID"
                ,t.* 
         from emp t 
         order by t.sal desc
      ) tb
    where ID<=5
      

  3.   

    楼上的说得对,在oracle中要注意order by和rownum的顺序,如果有其他的逻辑条件,那必须使用嵌套的查询才可以,不然的话很难得到想要的结果
      

  4.   

    select * from
    (select emp.*,row_number() over(order by sal) sno from emp)
    where sno <= 5