我有一个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会随机出现请帮忙!! ..提前谢谢
答案 0 :(得分:2)
如果这是oracle,则无法使用TOP 10,请使用以下语法:
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)
答案 1 :(得分:1)
DELETE FROM table_name LIMIT 1
答案 2 :(得分:0)
首先从整个表中选择前1,然后从整个表中选择最上面的一个,在那里省略第一个查询的结果
select top 1 (RowID)
from table
where RowID NOT IN (select top 1 RowID from table)
现在您知道哪些行不想删除。保存在临时表中可能吗?