Tengo una tabla en SQL Server. Me gustaría eliminar las 1000 filas superiores. Sin embargo, probé esto, pero en lugar de simplemente eliminar las 1000 filas superiores, eliminé todas las filas de la tabla.
Aquí está el código:
delete from [mytab]
select top 1000
a1,a2,a3
from [mytab]
sql
sql-server
sql-delete
edgarmtze
fuente
fuente

delete from [mytab]es una declaración yselect top ...es otra.Respuestas:
El código que probó es de hecho dos declaraciones. A
DELETEseguido de aSELECT.No define
TOPcomo ordenado por qué.Para un criterio de orden específico, eliminar de un CTE o expresión de tabla similar es la forma más eficiente.
fuente
DELETE TOP (1000) FROM table ORDER BY column, lea esto : "Las filas a las que se hace referencia en la expresión TOP que se usan con INSERT, UPDATE, MERGE o DELETE no están organizadas en ningún orden".WITHquejas de personas que no lo han hecho no lo ha hecho.Puede ser mejor para sql2005 + usar:
Para Sql2000:
PERO
Si desea eliminar un subconjunto específico de filas en lugar de un subconjunto arbitrario, debe especificar explícitamente el orden de la subconsulta:
Gracias tp @gbn por mencionar y exigir una respuesta más clara y exacta.
fuente
Como se define en el enlace a continuación, puede eliminar de una manera sencilla
http://technet.microsoft.com/en-us/library/ms175486(v=sql.105).aspx
fuente
fuente
fuente
Es rápido. Intentalo:
Reemplazar
YourTABLEpor el nombre de la tabla,XXpor un número, por ejemplo 1000,pkes el nombre del campo de clave principal de su tabla.fuente