如何只删除表中的顶级记录?

时间:2015-01-16 02:59:22

标签: c# sql sql-delete

我只是在寻找从表中删除最高记录的简单代码。

我试过了:

SqlCommand Delete = new SqlCommand("Command String", cn);
cn.Open();
Delete.CommandText = "DELETE TOP (1) queue.* FROM queue  ";
Delete.ExecuteNonQuery();
cn.Close();

但是我收到了一个错误:

  

'*'附近的语法不正确。

TOP似乎只适用于SELECT

2 个答案:

答案 0 :(得分:4)

你可以这样做:

DELETE TOP(1) FROM queue

然而,这只会删除一个随机行(很可能是第一行,但不一定)。您可能想要做一些更有意义的事情,例如:

DELETE FROM queue WHERE queueId IN (
     SELECT TOP 1 queueId FROM queue ORDER BY queueId
)

这只是一个例子。我不知道您的表格结构或字段,因此您需要自己决定如何订购。请记住,从队列中发出“DELETE TOP(1)”不一定会删除第一行。它的作用是删除决定为你服务的第一行SQL服务器。它可能是也可能不是你表中的第一行。

答案 1 :(得分:1)

您删除热门记录的SQL查询错误。

替换它:

Delete.CommandText = "DELETE TOP (1) queue.* FROM queue  ";

使用

Delete.CommandText = "DELETE TOP(1) FROM queue";