使用 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)
删除表中的数据
帮助和信息
更改历史记录
版本 | 历史记录 |
---|---|
2005 年 12 月 5 日 |
|