您好,我在删除行时遇到问题,我想在数据库中保留两行并删除所有其他行,但我在此链接中找到了关于删除行的查询,但这 提供了mysql语法限制功能。但是在oracle中没有可用的限制变量。我该怎么做?
DELETE FROM Table
WHERE DateColumn NOT IN (SELECT DateColumn
FROM Table
GROUP BY date(DateColumn)
ORDER BY DateColumn DESC
LIMIT 2);
Run Code Online (Sandbox Code Playgroud)
这可以通过这个查询来实现
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);
Run Code Online (Sandbox Code Playgroud)
最里面的查询将从表中返回 rowid 的最小值,然后直接的外部查询将仅选择要在最外面的删除中避免的两行。