SELECT * 
  FROM DATA 
 WHERE IDXPARTNO = 753
   AND IDXMACHINENO = 405
   AND IDXPROCM = 981
   AND ROWNUM <= 60
 ORDER BY SAMPLETIME DESC, SAMPLENO DESC;

解决方案 »

  1.   

    ??这个,比较佩服楼主,简单的问题搞得这么复杂。。
    直接这么写不就可以了么:
    SELECT MEASUREDATA, SAMPLETIME, SAMPLENO 
      FROM DATA 
     WHERE IDXPARTNO = 753
       AND IDXMACHINENO = 405
       AND IDXPROCM = 981
       AND ROWNUM <= 60
     ORDER BY SAMPLETIME DESC, SAMPLENO DESC 楼主的那个查询,每取一行数据都要去执行子查询一次,效率可想而知。。
    是我我也要骂人。。
    :)
      

  2.   

    在ORACLE8.17中,两种写法的结果是一样的...
      

  3.   

    rownum是select之后就产生了的,order by 对它不起什么作用。也就是说order by 不改变rownum.所以我认为如果必须先排序再取前60没有好办法。
      

  4.   

    developer2002(开发者2002)  用rank() over()分析函数。
     
     多说两句啊。关注ing
      

  5.   

    想达到你的目的只有你写的语句才能实现,只要你的子查询能用上选择性比较好的索引、选择出来的记录数不是特别多的话速度就不会慢。一定需要优化就只能看你的索引是否合适,以及增大你的sort_area_size。
      

  6.   

    I agree  walkworm(冷暖自知)
      

  7.   

    KingSunSha(弱水三千)我用的也是8.17可结果真的不一样