使用TOP限制删除的行

3月 2nd, 2011

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

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

USE AdventureWorks2008R2;

GO

DELETE TOP (20)

FROM Purchasing.PurchaseOrderDetail

WHERE DueDate < ‘20020701’;

GO

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

USE AdventureWorks2008R2;

GO

DELETE FROM Purchasing.PurchaseOrderDetail

WHERE PurchaseOrderDetailID IN

(SELECT TOP 10 PurchaseOrderDetailID

FROM Purchasing.PurchaseOrderDetail

ORDER BY DueDate ASC);

GO

标签:
目前还没有任何评论.