如何删除表格中除最新的20行之外的所有行?

时间:2010-12-03 04:28:28

标签: c# sql sql-server database

如何删除顶行?如果超过20行,我想删除顶行。 即时通讯使用c#。

3 个答案:

答案 0 :(得分:1)

查看DELETE (Transact-SQL)

  

TOP(表达)[PERCENT]

     

指定的数量或百分比   将被删除的随机行。   表达式可以是数字也可以是   行的百分比。行   在使用的TOP表达式中引用   INSERT,UPDATE或DELETE不是   按任何顺序排列。

也许还可以阅读The DELETE statement in SQL Server

答案 1 :(得分:0)

有关删除http://msdn.microsoft.com/en-us/library/bb386925.aspx

的一些信息
var ordFetch =
    (from ofetch in db.Orders
     where ofetch.OrderID == reqOrder
     select ofetch).First();
db.Orders.DeleteOnSubmit(ordFetch);
db.SubmitChanges();

选择顶行:

var data = (from p in people
           select p).Take(100);

答案 2 :(得分:0)

假设ID字段是合适的替代品并且总是随着时间的推移而增加(即ID的最小值是最旧的,并且总是如此):

using (SqlConnection conn = new SqlConnection("yourconnectionstring"))
{
    SqlCommand cmd = conn.CreateCommand(
        "DELETE FROM table WHERE ID NOT IN (SELECT TOP 20 ID FROM table ORDER BY ID DESC)");
    cmd.ExecuteNonQuery();
}

(我的C#语法可能略有偏差 - 我是从内存中做到的 - 但SQL查询应该没问题。)