C# 如何仅从表中删除顶部记录?

C# 如何仅从表中删除顶部记录?,c#,sql,sql-delete,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一起使用。用于删除TOP记录的sql查询是

我只是在寻找从表中删除顶部记录的简单代码

我试过:

SqlCommand Delete = new SqlCommand("Command String", cn);
cn.Open();
Delete.CommandText = "DELETE TOP (1) queue.* FROM queue  ";
Delete.ExecuteNonQuery();
cn.Close();
但我有一个错误:

“*”附近的语法不正确


TOP似乎只能与SELECT一起使用。

用于删除TOP记录的sql查询是错误的

替换此项:

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


删除顶部记录的sql查询错误

替换此项:

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

您可以这样做:

DELETE TOP(1) FROM queue
但是,这只会删除最有可能是第一行的随机行,但不一定是第一行。您可能想做一些更有意义的事情,例如:

DELETE FROM queue WHERE queueId IN (
     SELECT TOP 1 queueId FROM queue ORDER BY queueId
)
这只是一个例子。我不知道您的表结构或字段,所以您需要自己决定如何排序。请记住,从队列中发出DELETE TOP 1并不一定会删除第一行。它所做的是删除SQL server决定为您服务的第一行。它可能是也可能不是表中的第一行。

您可以这样做:

DELETE TOP(1) FROM queue
但是,这只会删除最有可能是第一行的随机行,但不一定是第一行。您可能想做一些更有意义的事情,例如:

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

这只是一个例子。我不知道您的表结构或字段,所以您需要自己决定如何排序。请记住,从队列中发出DELETE TOP 1并不一定会删除第一行。它所做的是删除SQL server决定为您服务的第一行。它可能是也可能不是表中的第一行。

试试这一行。从队列中删除TOP 1始终是需要删除的TOP记录。现在唯一的问题是在删除数据后让datagrid刷新record@ghost10000-你没有抓住重点。您可能总是想删除第一行,但SQL不能保证每次都会返回第一行。delete TOP1不会删除第一行。它删除SQL决定返回给您的第一行。看这里:。然后在下面看到我的答案。SQL标准行是有序的,当且仅当您通过ORDERBY子句对它们进行排序时。试试这个。从队列中删除TOP 1始终是需要删除的TOP记录。现在唯一的问题是在删除数据后让datagrid刷新record@ghost10000-你没有抓住重点。您可能总是想删除第一行,但SQL不能保证每次都会返回第一行。delete TOP1不会删除第一行。它删除SQL决定返回给您的第一行。看这里:。然后在下面看到我的答案。SQL标准行被排序当且仅当您通过ORDERBY子句对它们进行排序时。这将删除任意行。没有order by,就没有“top”行。如果您只想一次删除一个随机行,这是可以的。记住这是随机的!我附和@icemanind的评论。这将删除任意行。没有order by,就没有“top”行。如果您只想一次删除一个随机行,这是可以的。记住这是随机的!我不得不添加另一个带有标识增量的列,以确保第一条记录输入第一条记录输出,但它可以工作。感谢您的帮助:这是我在不使用TOP:DELETE FROM queue的情况下编写第二个示例的方式,其中queueId=SELECT MINqueueId FROM queue。我必须添加另一个具有标识增量的列,以确保第一条记录输入第一条记录输出,但它可以工作。感谢您的帮助:这是我在不使用TOP:DELETE FROM queue的情况下编写第二个示例的方式,其中queueId=SELECT MINqueueId FROM queue。