我有一个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会随机出现
请帮忙!!...提前感谢
4条答案
按热度按时间htzpubme1#
如果这是oracle,则不能使用TOP10,请使用以下语法:
当然你也应该给予命令
fbcarpbf2#
yeotifhr3#
首先从整个表中选择前1个,然后从整个表中选择省略了第一个查询结果的前1个
现在你知道哪些行你不想删除.保存到临时表也许?
enyaitl34#
您可以使用以下代码完成此操作
假设表名为“demo”,则代码应为:
DELETE from demo where id = (SELECT id FROM demo limit 1);
您不需要手动提供ID。请确保对表进行相应的排序。