Share via


Impostazione di limiti per le righe eliminate utilizzando la clausola TOP

È possibile utilizzare la clausola TOP per limitare il numero di righe eliminate in un'istruzione DELETE. Quando si utilizza una clausola TOP (n) con l'istruzione DELETE, l'operazione di eliminazione viene eseguita su una selezione casuale di un numero n di righe.

L'istruzione seguente, ad esempio, elimina dalla tabella PurchaseOrderDetail20 righe casuali contenenti scadenze precedenti alla data 1 luglio 2002.

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

Se si desidera utilizzare TOP per eliminare righe in un ordine cronologico significativo, è necessario utilizzare questa clausola insieme a ORDER BY in un'istruzione di selezione secondaria. Tramite la query seguente vengono eliminate le 10 righe della tabella PurchaseOrderDetail contenenti le date di scadenza più imminenti. Per assicurarsi che vengano eliminate solo 10 righe, la colonna specificata nell'istruzione di selezione secondaria (PurchaseOrderID) è la chiave primaria della tabella. L'utilizzo di una colonna non chiave nell'istruzione di selezione secondaria può avere come conseguenza l'eliminazione di più di 10 righe se la colonna specificata contiene valori duplicati.

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