valores una tabla numero modificar insertar hasta extraer ejemplos digitos datos caracteres caracter cadena buscar sql sql-server sql-delete

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



modificar valores de una tabla sql (6)

Tengo una tabla en SQL Server. Me gustaría borrar las 1000 filas superiores de él. Sin embargo, probé esto, pero en vez de simplemente eliminar las 1000 filas superiores, borré todas las filas de la tabla.

Aquí está el código:

delete from [mytab] select top 1000 a1,a2,a3 from [mytab]



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

No defines TOP como ordenado por qué.

Para un criterio de ordenamiento específico, la eliminación 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


Es rápido. Intentalo:

DELETE FROM YourTABLE FROM (SELECT TOP XX PK FROM YourTABLE) tbl WHERE YourTABLE.PK = tbl.PK

Reemplace YourTABLE por nombre de tabla, XX por un número, por ejemplo 1000, pk es el nombre del campo de clave principal de su tabla.


Puede ser mejor para sql2005 + para 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 desea eliminar un subconjunto específico de filas en lugar de un subconjunto arbitrario, debe especificar explícitamente el orden en 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 la respuesta más clara y exacta.


SET ROWCOUNT 1000; DELETE FROM [MyTable] WHERE .....


delete from [mytab] where [mytab].primarykeyid in ( select top 1000 primarykeyid from [mytab] )