取出表中按照某字段排序的前N条记录,然后要把这前N条记录删除
如何实现?

解决方案 »

  1.   

    ORDER BY FIELD  ->  WHERE ROWNUM <= N  ->  DELETE
      

  2.   

    DELETE FROM T
     WHERE ROWID IN
           (SELECT ROWID
              FROM (SELECT ROWID, ROW_NUMBER() OVER(ORDER BY COLX) RN FROM T)
             WHERE RN <= 10);
      

  3.   


    SQL> select * from t;                                    IDX CNAME
    --------------------------------------- ------------------------------
                                          1 a
                                          2 b
                                          3 c
                                          4 d
                                          5 eSQL> 
    SQL> delete from t where idx in(
      2    select * from (
      3      select idx from t order by idx desc
      4    ) a where rownum<=2
      5  );2 rows deletedSQL> select * from t;                                    IDX CNAME
    --------------------------------------- ------------------------------
                                          1 a
                                          2 b
                                          3 c