使用 TOP 限制删除的行

更新日期: 2005 年 12 月 5 日

可以使用 TOP 子句限制 DELETE 语句中删除的行数。当 TOP (n) 子句与 DELETE 一起使用时,将针对随机选择的第 n 行执行删除操作。

例如,下面的语句从 PurchaseOrderDetail 表中删除了其到期日期早于 2002 年 7 月 1 日的 20 个随机行。

USE AdventureWorks;
GO
DELETE TOP (20) 
FROM Purchasing.PurchaseOrderDetail
WHERE DueDate < '20020701';
GO

如果需要使用 TOP 来删除按有意义的时间顺序排列的行,您必须同时使用 TOP 和 ORDER BY 子句。下面的查询从 PurchaseOrderDetail 表中删除了其到期日期最早的 10 行。为了确保仅删除 10 行,嵌套 Select 语句 (PurchaseOrderID) 中指定的列将成为表的主键。如果指定列包含重复的值,则在嵌套 Select 语句中使用非键列可能会导致删除的行超过 10 个。

USE AdventureWorks;
GO
DELETE FROM Purchasing.PurchaseOrderDetail
WHERE PurchaseOrderDetailID IN
   (SELECT TOP 10 PurchaseOrderDetailID 
    FROM Purchasing.PurchaseOrderDetail 
    ORDER BY DueDate ASC);
GO

请参阅

概念

使用 DELETE 删除行
使用 TRUNCATE TABLE 删除所有行
删除结果集中的行
使用 TOP 和 PERCENT 限制结果集

其他资源

TOP (Transact-SQL)
DELETE (Transact-SQL)
删除表中的数据

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2005 年 12 月 5 日

新增内容:
  • 添加了有关在将嵌套 Select 语句与 ORDER BY 子句一起使用时指定主键的详细信息。