select col1,col2,...,coln from (select rownum no,col1,col2,...coln from tb)
where no between n and m;

解决方案 »

  1.   

    select * from 
    (select rownum as rid,t.* from aa
     where rownum >n) t
    where rid<m
      

  2.   

    select * from 
    (select rownum as rid,aa.* from aa
     where rownum >n) t
    where rid<m
      

  3.   

    TO dy_yong(祥子) 
      你的SQL有点问题呵,
    select * from 
    (select rownum as rid,aa.* from aa
     where rownum <n) t
    where rid>m
    子查询里应该是小于,外查询才是大于。
    但这种写法还有缺陷,如里子查询当中有order by 语句的话,就不好使了。
    下面这种写法是可以排序的SELECT * FROM 
      (SELECT ROWNUM AS MY_ROWNUM, TABLE_A.* FROM 
       ( select * from 表名 ORDER BY 日期 desc) TABLE_A 
      WHERE ROWNUM<10) 
    WHERE MY_ROWNUM>=5;
      

  4.   

    多谢楼上各位的回答,正是我想要的,但还有一个问题:我要用下面的语句实现,因为数据表是个输入参数,即指不定查询哪个表,所以表中的具体字段也就不清楚,所以用*号取出全部字段,但就会出现一个问题:查询结果多中会多出一个page字段,请问如何去除?select * from (select trunc((rownum - 1) / '||pagesize||') + 1 page, tbn.* from '||tbname||' tbn)  where page = '||pageno;
      

  5.   

    看你的语句改为下边的也应该行吧。
    select tbn.* from '||tbname||' tbn)  where trunc((rownum - 1) / '||pagesize||') + 1 = '||pageno;
      

  6.   

    soniczck(城市农作物) 说的不行哦,返回未选定行
      

  7.   

    实在不行,就把那个*替换字段名称,取原表的字段名
     select column_name  from user_TAB_COLUMNS where table_name=tbname
    把遍历到的所有column_name组成那个*号
      

  8.   

    water_qing(小清) 
    你厉害的。赫赫。
      

  9.   

    若是更新(update)指定行数内的数据,该如何写呢?
      

  10.   

    To: pipilyg(东海)得到他的Rowid,
    或者是Key