Compartir a través de


Limitar el número de filas eliminadas mediante TOP

Actualizado: 5 de diciembre de 2005

Puede utilizar la cláusula TOP para limitar el número de filas que se eliminan en una instrucción DELETE. Cuando se utiliza una cláusula TOP (n) con DELETE, la operación de eliminación se realiza en una selección aleatoria de n número de filas.

Por ejemplo, la siguiente instrucción elimina 20 filas aleatorias de la tabla PurchaseOrderDetail cuyas fechas de vencimiento sean anteriores al primero de julio de 2002.

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

Si necesita utilizar TOP para eliminar filas por un orden cronológico significativo, debe utilizarla junto con ORDER BY en una instrucción de subselección. La siguiente consulta elimina de la tabla PurchaseOrderDetail las 10 filas con las fechas de vencimiento más antiguas. Para garantizar que sólo se eliminen 10 filas, la columna especificada en la instrucción de subselección (PurchaseOrderID) es la clave principal de la tabla. El uso de una columna sin clave en la instrucción de subselección podría causar la eliminación de más de 10 filas si la columna especificada contiene valores duplicados.

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

Vea también

Conceptos

Eliminar filas mediante DELETE
Eliminar todas las filas mediante TRUNCATE TABLE
Eliminar filas de conjuntos de resultados
Limitar los conjuntos de resultados con TOP y PERCENT

Otros recursos

TOP (Transact-SQL)
DELETE (Transact-SQL)
Eliminar datos de una tabla

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

5 de diciembre de 2005

Contenido nuevo:
  • Se agregó información sobre cómo especificar una clave principal cuando se utiliza una instrucción de subselección con una cláusula ORDER BY.