Limitation du nombre de lignes à supprimer avec la clause TOP

Mis à jour : 5 décembre 2005

Vous pouvez utiliser la clause TOP pour limiter le nombre de lignes à supprimer dans une instruction DELETE. Lorsqu'une clause TOP (n) est utilisée avec DELETE, l'opération de suppression est effectuée sur une sélection aléatoire de n lignes.

Par exemple, l'instruction suivante supprime de manière aléatoire 20 lignes de la table PurchaseOrderDetail dont la date d'échéance est antérieure au 1er juillet 2002.

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

Si vous devez utiliser une clause TOP pour supprimer des lignes dans un ordre chronologique significatif, vous devez associer à cette clause TOP une clause ORDER BY dans une sous-sélection. La requête suivante supprime les 10 lignes de la table PurchaseOrderDetail dont la date d'expiration est la plus proche. Pour garantir que seules 10 lignes sont supprimées, la colonne spécifiée dans l'instruction de sous-sélection (PurchaseOrderID) constitue la clé primaire de la table. L'utilisation d'une colonne non-clé dans l'instruction de sous-sélection peut entraîner la suppression de plus de 10 lignes si la colonne spécifiée contient des valeurs dupliquées.

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

Voir aussi

Concepts

Suppression de lignes au moyen de l'instruction DELETE
Suppression de toutes les lignes à l'aide de l'instruction TRUNCATE TABLE
Suppression de lignes dans des ensembles de résultats
Limitation des jeux de résultats à l'aide de TOP et de PERCENT

Autres ressources

TOP (Transact-SQL)
DELETE (Transact-SQL)
Suppression de données dans une table

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

5 décembre 2005

Nouveau contenu :
  • Ajout d'informations sur la spécification d'une clé primaire lors de l'utilisation d'une instruction de sous-sélection avec une clause ORDER BY.