使用 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 依有意義的時序來刪除資料列,就必須在 subselect 陳述式中同時使用 TOP 和 ORDER BY。下列查詢會刪除 PurchaseOrderDetail 資料表中具有最早到期日的 10 個資料列。為確保只刪除 10 個資料列,subselect 陳述式 (PurchaseOrderID) 中指定的資料行是資料表的主索引鍵。如果指定的資料行包含重複值,則在 subselect 陳述式中使用非索引鍵資料行會造成刪除 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 日

新增內容:
  • 新增有關在使用 subselect 陳述式與 ORDER BY 子句時指定主索引鍵的資訊。