次の方法で共有


TOP の使用による削除行数の制限

更新 : 2005 年 12 月 5 日

TOP 句を使用すると、DELETE ステートメントで削除される行の数を制限できます。DELETE ステートメントで TOP (n) 句を使用した場合、ランダムに選択される n 行に対して削除操作が実行されます。

たとえば、次のステートメントでは、納期が 2002 年 7 月 1 日より早い 20 行を PurchaseOrderDetail テーブルからランダムに選択して削除します。

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

TOP を使用して、意味のある日時順に行を削除する必要がある場合は、サブセレクト ステートメントに ORDER BY を含めて TOP を使用する必要があります。次のクエリでは、納期が早いものから 10 行を PurchaseOrderDetail テーブルから削除します。10 行だけを確実に削除するために、サブセレクト ステートメントではテーブルの主キーの列 (PurchaseOrderID) を指定しています。サブセレクト ステートメントで非キー列を指定すると、指定した列に重複する値が含まれる場合、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 日

新しい内容 :
  • サブセレクト ステートメントで ORDER BY 句を使用する場合の主キーの指定に関する情報を追加しました。