表没有主建,,
只有两个字段
时间,备注
如何删除第5条记录,用时间排序急急急

解决方案 »

  1.   

    借助rowid吧
    rowid的格式:表空间号,数据文件好,表编号,所在数据块号,所在块内的编号。
    不过这样你要查很多数据字典才能确定“第5条”的位置。不知道是插入先后顺序的第5条,还是物理存储位置的第5条,还是你那个时间字段意义上的先后上的第五条???
      

  2.   

    delete from table where time=(select time from (select rownum rn,time from table order by time) where rn=5);
      

  3.   

    使用下面代码用在最后一列显示数字的,然后用一个DELETE嵌套就可以了。
    SELECT 时间,备注,ROW_NUMBER() OVER (PARTITION BY 时间 ORDER BY 备注) FROM 表名
      

  4.   


    oracle里有Row_number()函数吗???
      

  5.   

    那个是oracle9i以后出的分析函数,类似的还有很多,功能很强大,lz有兴趣可以在网上搜索相关资料看看
      

  6.   


    delete from table where (select rownum from table order by time) in (select '5' from dual);
      

  7.   

    举例:要删除第一行的数据,则先取出该行的ROWID,然后根据ROWID删除:
    delete from scott.emp t
     where rowid = (select c2
                      from (select rownum c1, rowid c2, t.* from scott.emp t) a
                     where c1 = 1)
      

  8.   

    如何取top n记录,(使用rownum)
    SELECT * FROM (SELECT id from bb order by id) where rownum <3;如何取第M条到第N条之间的
    select * 
    from (select id,name,row_number() over(order by id) rn 
    from user) t 
    where t.rn>=4 and t.rn <=6删除M条到第N条之间的记录
    delete from tb1 
    where rowid in 
    (SELECT rowid  FROM (SELECT rowid,id,VAL,row_number() over (order by VAL) rn from TB1 )  
    where rn >2 and rn<6);
      

  9.   

    delete from table where time=(select time from (select rownum rn,time from table order by time) where rn=5);

    delete from table where (select rownum from table order by time) in (select '5' from dual);不知哪个效率更高点??????