使用SQL删除前1行

时间:2015-03-06 10:15:45

标签: sql database oracle

我有一个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会随机出现

请帮忙!! ..提前谢谢

3 个答案:

答案 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)

现在您知道哪些行不想删除。保存在临时表中可能吗?