Saltar al contenido

¿Cómo eliminar las 1000 filas superiores de una tabla usando Sql Server 2008?

Solución:

El código que probó es de hecho dos declaraciones. A DELETE seguido de un SELECT.

Tu no defines TOP según lo ordenado por qué.

Para un criterio de orden específico, eliminar de un CTE o una expresión de tabla similar es la forma más eficiente.

;WITH CTE AS
(
SELECT TOP 1000 *
FROM [mytab]
ORDER BY a1
)
DELETE FROM CTE

Puede ser mejor para sql2005 + usar:

DELETE TOP (1000)
FROM [MyTab]
WHERE YourConditions

Para Sql2000:

DELETE FROM [MyTab]
WHERE YourIdField IN 
(
  SELECT TOP 1000 
    YourIdField 
  FROM [MyTab]
  WHERE YourConditions
)

PERO

Si quieres borrar específico subconjunto de filas en lugar de subconjunto arbitrario, debe especificar explícitamente el orden de la subconsulta:

DELETE FROM [MyTab]
WHERE YourIdField IN 
(
  SELECT TOP 1000 
    YourIdField 
  FROM [MyTab]
  WHERE YourConditions
  ORDER BY ExplicitSortOrder
)

Gracias tp @gbn por mencionar y exigir una respuesta más clara y exacta.

Como se define en el enlace a continuación, puede eliminar de manera sencilla

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

http://technet.microsoft.com/en-us/library/ms175486(v=sql.105).aspx

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *