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
DELETE
seguido de aSELECT
.No define
TOP
como 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".WITH
quejas 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
YourTABLE
por el nombre de la tabla,XX
por un número, por ejemplo 1000,pk
es el nombre del campo de clave principal de su tabla.fuente