有时间段:
  select * from (select * from tab_name order by 时间字段) where rownum<=50;
如果没有时间段,除非表没有进行过删除和导入导出,否则是无法查询的,如果满足这个条件,可以执行下面sql进行查询:
  select * from tab_name where dbms_rowid.rowid_row_number(rowid)<50;

解决方案 »

  1.   

    添加一个序列好了,一定要注意添加的序列不能是循环的,
    select * from (select * from your_table where your_conditinos order by your_id) where rownum < 50;
      

  2.   

    恐怕不行,rowid也不现实的,如果重启了数据库,或者清了SGA缓存,那么rowid优惠遵循小号优先的原则mrowid还是不能反映insert的时间顺序的
      

  3.   

    如果你插入数据的,数据没什么改变的话,这样也行啊
    select * from (select * from 表名 order by rownum desc ) a where rownum<50;表中的数据应该是顺着时间的先后插入的吧,如果插入以后都没有更新或删除,把一个表中最后面的50条查找出来,应该也是最近的50条了吧,
      

  4.   

    select * from tablename where abs(tanlename.numcolumn -50) = (select min(abs(tablename.numcolumn -50)) from tablename)
      

  5.   

    按日期倒序排列後使用rownum<=50
      

  6.   


    友联创新系统集成有限公司(北京上地)
    在天津招聘
    熟悉oracle 有相关工作经验 学过c语言
    工作地点:天津
    其它事项面谈
    有意象请将简历发至
    [email protected] 
    [email protected]
    联系人:王先生