oracle 使用SQL删除前1行

qyuhtwio  于 2023-02-03  发布在  Oracle
关注(0)|答案(4)|浏览(191)

我有一个SQL,目的是保留最后两个条目并删除最上面的行。

delete from table 
where RowID in (select top 10 RowID from table)

这将删除所有行,而不是我打算删除的前几行。
在我正在使用的界面中,“WITH”命令不起作用。它必须类似于上面的查询。
我有一个3列的表x, y, z。我不能依赖伪列rownum,因为当我删除一些行时,rownum不会改变。因为这个删除查询将每60秒运行一次,表的rownum不会每次都从1开始。
我想删除除最后两个条目之外的所有其他行。Top可以

delete from custom.colperformance 
where RowID in (select top 2 RowID 
                from custom.colperformance 
                order by RowID desc)

这给了我一个错误

Table structure 

ProfileTime   TriggerTime  RowId
12            3             4
12            5             6
6             7             2

这里,如果我们删除中间的一些行,Rowid会随机出现
请帮忙!!...提前感谢

htzpubme

htzpubme1#

如果这是oracle,则不能使用TOP10,请使用以下语法:

delete from table where RowID in (select RowID from table where rownum <= 10)

当然你也应该给予命令

delete from table where RowID in (select RowID from table where rownum <= 10 ORDER BY table.columnX)
fbcarpbf

fbcarpbf2#

DELETE FROM table_name LIMIT 1
yeotifhr

yeotifhr3#

首先从整个表中选择前1个,然后从整个表中选择省略了第一个查询结果的前1个

select top 1 (RowID) 
from table 
where RowID NOT IN (select top 1 RowID from table)

现在你知道哪些行你不想删除.保存到临时表也许?

enyaitl3

enyaitl34#

您可以使用以下代码完成此操作
假设表名为“demo”,则代码应为:
DELETE from demo where id = (SELECT id FROM demo limit 1);
您不需要手动提供ID。请确保对表进行相应的排序。

相关问题