本帖最后由 sendoh_akira 于 2010-12-29 14:37:16 编辑

解决方案 »

  1.   


    --------使用rowid
    delete from abc b
     where rowid in
           (select rowid from (select rownum rn, rowid from abc) where rn > 100)
      

  2.   

    必须要用rowid吗 可不可以不用rowid
      

  3.   

    rownum是虚列,rowid是实际存在的。
    你使用delete from abc where rownum in,这个肯定删除不了什么东东的。
    就像你用select * from abc where rownum<100有数据,
    但是你查询select * from abc where rownum=100就不会有数据。
    in就更不用说了
      

  4.   

    可以不用rowid,你可以使用你行的唯一标识列进行删除。
      

  5.   

     
    没能生效啊 这个sql  报错了
      

  6.   

    delete from abc b
     where rowid in
           (select ri from (select rownum rn, rowid ri from abc) where rn > 100)使用这个看下。
      

  7.   

    你报错是因为少个别名,
    (select rownum rn,a.* from abc a),后边少一个别名,
    加个别名,不会报错,但也不会删除任何行的。
    按照2l那样写,用rowid或者的唯一标识列进行删除。