在SQL Server中可以用Top来实现,在oracle中有什么效率比较好的方法呢??

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3287/3287678.xml?temp=.7129022
      

  2.   

    select * from 
    (select tb.*,row_number() over(order by colname) rk from tb) t
    where rk<=100;
      

  3.   

    可以用select * from table_name where rownum<=num order by xxx
      

  4.   

    select * from table_name where rownum<=100 order by xxx
      

  5.   

    to:   bzszp(SongZip) select * from 
    (select tb.*,row_number() over(order by colname) rk from tb) t
    where rk<=100;
    你这种方法虽然可以得到我想要的结果,可是如果表数据量很大的时候,会严重影响查询速度,请问还有效率比较好的写法吗??
      

  6.   

    数据量大排序本来就比较慢,bzszp(SongZip) 的语句效率应该是比较高的了
      

  7.   

    SELECT *
      FROM (SELECT ROWNUM NUM, LJJC
              FROM TABLE
             WHERE LJJC > 0
             ORDER BY LJJC DESC)
     WHERE ROWNUM <= 100  SELECT T.*
              FROM (SELECT ROWNUM NUM, C.*
                FROM (SELECT  LJJC
                        FROM TABLE
                       WHERE LJJC > 0
                       ORDER BY LJJC DESC) C) T
             WHERE T.NUM <= 100