J'ai une table dans SQL Server. Je voudrais en supprimer les 1000 premières lignes. Cependant, j'ai essayé cela, mais au lieu de simplement supprimer les 1000 premières lignes, j'ai supprimé toutes les lignes du tableau.
Voici le code:
delete from [mytab]
select top 1000
a1,a2,a3
from [mytab]
sql
sql-server
sql-delete
edgarmtze
la source
la source
delete from [mytab]
c'est une instruction etselect top ...
une autre.Réponses:
Le code que vous avez essayé est en fait deux déclarations. Un
DELETE
suivi d'unSELECT
.Vous ne définissez pas
TOP
comme ordonné par quoi.Pour un critère de classement spécifique, la suppression d'une expression de table CTE ou similaire est le moyen le plus efficace.
la source
DELETE TOP (1000) FROM table ORDER BY column
, lisez ceci : "Les lignes référencées dans l'expression TOP utilisée avec INSERT, UPDATE, MERGE ou DELETE ne sont pas organisées dans aucun ordre."WITH
début de la liste prévient les plaintes des personnes qui ne l'ont pas fait.Peut être préférable pour sql2005 + à utiliser:
Pour Sql2000:
MAIS
Si vous souhaitez supprimer un sous-ensemble spécifique de lignes au lieu d'un sous-ensemble arbitraire, vous devez spécifier explicitement l'ordre de la sous-requête:
Merci à tp @gbn d'avoir mentionné et demandé la réponse la plus claire et la plus exacte.
la source
Comme défini dans le lien ci-dessous, vous pouvez supprimer de manière simple
http://technet.microsoft.com/en-us/library/ms175486(v=sql.105).aspx
la source
la source
la source
C'est rapide. Essayez-le:
Remplacer
YourTABLE
par nom de table,XX
par un nombre, par exemple 1000,pk
est le nom du champ de clé primaire de votre table.la source