在ORACLE7中如何取查询出来的前十条记录,是按降序进行排列的,因为ROWNUM在ORACLE7中没有ORACLE9中这样可以直接进行SELECT L,XS
  FROM TEST
 WHERE ROWNUM<=10
 ORDER BY XS DESC这样的写法在ORACLE7中是不能通过,请高手指点,是否需要加一个序列根据序列来判断。

解决方案 »

  1.   

    试试用统计可以不?
    SELECT L,XS,count(*) as num
      FROM TEST 
    WHERE num <=10 
    ORDER BY XS DESC 
      

  2.   

    SELECT L,XS
      FROM TEST
    connect by  ROWNUM <=10
    ORDER BY XS DESC
      

  3.   

    楼上的语法错误
    直接换oracle版本
    换到9i或更高
    有很多功能7里都不具备
    很难见到还用oracle7的了
      

  4.   

    select * from test a
    where (select count(b.xs) from test b where b.xs >= a.xs) <= 10 
    order by a.xs desc;
      

  5.   

    搂主说的不太清楚,索性两种情况都给你。
    1。先排序,然后再取前10条SELECT *
      FROM (
    SELECT L
          ,XS
      FROM TEST
    ORDER BY XS DESC 
     )
    WHERE ROWNUM <= 102。先取10条数据,然后再排序SELECT L
          ,XS
          ,RANK() OVER(
     ORDER BY XS DESC ) 
      FROM TEST
     WHERE ROWNUM <= 10
      

  6.   

    弱弱的问一下,Oracle7有RANK么??没用过,Oracle7。
      

  7.   


    select a.* from datalog a
    where (select count(1) from datalog b where a.rowID>b.rowID)<10
      

  8.   

    谢谢几位的回复:
    select a.* from datalog a 
    where (select count(1) from datalog b where a.rowID>b.rowID) <10  这种:select count(1) from datalog b where a.rowID>b.rowID 在执行的时候提示有错误,ORACLE7中这个函数报错 RANK() OVER(ORDER BY XS DESC)