--------使用rowid delete from abc b where rowid in (select rowid from (select rownum rn, rowid from abc) where rn > 100)
必须要用rowid吗 可不可以不用rowid
rownum是虚列,rowid是实际存在的。 你使用delete from abc where rownum in,这个肯定删除不了什么东东的。 就像你用select * from abc where rownum<100有数据, 但是你查询select * from abc where rownum=100就不会有数据。 in就更不用说了
可以不用rowid,你可以使用你行的唯一标识列进行删除。
没能生效啊 这个sql 报错了
delete from abc b where rowid in (select ri from (select rownum rn, rowid ri from abc) where rn > 100)使用这个看下。
你报错是因为少个别名, (select rownum rn,a.* from abc a),后边少一个别名, 加个别名,不会报错,但也不会删除任何行的。 按照2l那样写,用rowid或者的唯一标识列进行删除。
--------使用rowid
delete from abc b
where rowid in
(select rowid from (select rownum rn, rowid from abc) where rn > 100)
你使用delete from abc where rownum in,这个肯定删除不了什么东东的。
就像你用select * from abc where rownum<100有数据,
但是你查询select * from abc where rownum=100就不会有数据。
in就更不用说了
没能生效啊 这个sql 报错了
where rowid in
(select ri from (select rownum rn, rowid ri from abc) where rn > 100)使用这个看下。
(select rownum rn,a.* from abc a),后边少一个别名,
加个别名,不会报错,但也不会删除任何行的。
按照2l那样写,用rowid或者的唯一标识列进行删除。