select * from (select * from a order by 成績 asc/desc) where rownum<=n

解决方案 »

  1.   

    select * from 
    (select id,name,rank() over(order by sal desc) rk from table_name order by sal desc)
    where rk<=nor:
    select * from 
    (select id,name,rank() over(order by sal) rk from table_name order by sal)
    where rk<=n
      

  2.   

    后n的
    select * from (select rownum id,a.* from 
    (select * from tbname order by score) a) b
    where b.id>=(select count(*)-n from tbname);
      

  3.   

    jiezhi(浪子) :提示:"ORA-00907: 缺少右括号"
      

  4.   

    select * from (select * from web_answer_table order by score desc) where rownum<=3   
    我的oracle版本是805。
      

  5.   

    select * from (select * from web_answer_table order by score desc) where rownum<=3 也是报上面的错。
      

  6.   

    语句没有问题自己在检查一下吧
    例子:
    14:15:49 SQL> select * from tcn;AAA              BBB
    ---------- ---------
    b                  5
    a                  1
    a                  3
    a                  5
    a                  6
    a                  4已选择6行。实际:51
    14:15:55 SQL> select * from (select * from tcn order by bbb desc) where rownum<=3;AAA              BBB
    ---------- ---------
    a                  6
    b                  5
    a                  5实际:170
    14:16:21 SQL>
      

  7.   

    9i里是没有问题的。
    是不是805中不支持嵌套的select中用排序呀。
    试试这样
    create view tcn_v as
    select *
    from tcn
    order by bbb desc;然后
    select * from tcn_v where rownum<=3;
      

  8.   

    create view tcn_v as
    select *
    from tcn
    order by bbb desc;
    也不支持嵌套的排序,报的错:ORA-00933: SQL 命令未正确结束。估计原因也和上面的差不多啊!
    大侠们再帮帮忙啊!先谢谢上面的了。
      

  9.   

    805是这样的,视图中不允许有order by子句。
    也不允许子查询。贴主的这个问题有点难了。
    最好的法子是
    升级。
    或者麻烦点,做存储过程用游标来排序