您好,我在删除行时遇到问题,
我想在数据库中保留两行并删除所有其他行
我在此链接for delete row中找到了一个查询
但是它提供了mysql语法限制功能。
但是在oracle中没有可用的限制变量。
我该怎么做?

DELETE FROM Table
  WHERE DateColumn NOT IN (SELECT DateColumn
                             FROM Table
                         GROUP BY date(DateColumn)
                         ORDER BY DateColumn DESC
                            LIMIT 2);

最佳答案

这个查询可以通过这个查询来实现

DELETE FROM TABLE
 WHERE ROWID NOT IN
    (SELECT ROWIDS FROM (SELECT MIN(ROWID) ROWIDS
                           FROM TABLE
                          GROUP BY DATECOLUMN
                          ORDER BY DATECOLUMN DESC)
      WHERE ROWNUM <= 2);

最里面的查询将返回表中rowid的最小值,然后直接外面的查询将仅选择两行以避免最外层的删除。

关于sql - 从数据库中删除除Oracle中的前两行外的所有行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23054995/

10-13 05:34