select * from (select * from tbname order by colname)
where rownum<6;

解决方案 »

  1.   

    oracle应该也有top这个用法的。
      

  2.   

    为什么只能rownum<
    如果用到rownum > 就出错?
      

  3.   

    rownum是随着结果集生成的,一旦生成,就不会变化了;
    同时,生成的结果是依次递加的,没有1就永远不会有2!  
    rownum 是在 查询集合产生的过程中产生的伪列,并且如果where条件中存在 rownum 条件的话,则:  
    1: 假如 判定条件是常量,则:  
    只能 rownum = 1, <= 大于1 的自然数, = 大于1 的数是没有结果的, 大于一个数也是没有结果的  
    即 当出现一个 rownum 不满足条件的时候则 查询结束
      

  4.   

    5-9的值
    select * from 
    (select *,rownum num from 
    (select * from tbname order by colname) a
    where rownum<10) b
    where num>4;
      

  5.   

    select * from(select * from table_name order by col_name) where rownum<6;
      

  6.   

    select * from (select rownum rm,a.* from table_name a order by col_name where rownum<n ) where rm>m;
      

  7.   

    剛弄明白,來發一貼:-- 我們想把最先進入公司的5個人找出來
    SELECT * FROM emp WHERE ROWNUM <= 5 ORDER BY hiredate;

    SELECT * FROM (SELECT * FROM emp ORDER BY hiredate)
       WHERE ROWNUM <= 5;-- 我們想把最先進入公司的6~10個人找出來!!!!!!!!!!!!!!
    SELECT * FROM (SELECT * FROM emp ORDER BY hiredate)
       WHERE ROWNUM <= 10 
    MINUS
    SELECT * FROM (SELECT * FROM emp ORDER BY hiredate)
       WHERE ROWNUM <= 5;Good luck!!