C'est probablement une question très simple pour quelqu'un qui a de l'expérience, mais je voulais simplement connaître le moyen le plus sûr de supprimer quelques centaines d'enregistrements d'une table SQL situés dans une plage spécifique.
Par exemple, je dois supprimer les lignes dont l'identifiant est compris entre 79 et 296:
Mon souci est que si je disais tout supprimer avec un identifiant (> 79 ET <296), alors il pourrait littéralement effacer toute la table.
si vous utilisez SQL Server
delete from Table where id between 79 and 296
Après votre modification: vous avez maintenant clarifié que tu veux :
ID (>79 AND < 296)
Alors utilisez ceci:
delete from Table where id > 79 and id < 296
Vous avez donné un ID de condition (> 79 et <296), alors la réponse est:
delete from tab
where id > 79 and id < 296
c'est pareil que:
delete from tab
where id between 80 and 295
si id
est un entier.
Tous ont répondu:
delete from tab
where id between 79 and 296
c'est pareil que:
delete from tab
where id => 79 and id <= 296
Attention à la différence.
DELETE FROM table_name
WHERE id BETWEEN 79 AND 296;
Vous pouvez utiliser cette méthode car id ne peut pas être séquentiel dans tous les cas.
SELECT *
FROM `ht_news`
LIMIT 0 , 30
Si vous l'écrivez comme suit dans le serveur SQL, vous ne risquez pas d'effacer la table de la base de données à moins que toutes les valeurs de cette table ne se trouvent réellement entre ces valeurs:
DELETE FROM [dbo].[TableName] WHERE [TableName].[IdField] BETWEEN 79 AND 296
Mon souci est que si je dis supprimer evertything avec un ID (> 79 ET <296), alors il pourrait littéralement effacer toute la table ...
Cela n'arrivera pas parce que vous aurez une clause where. Qu'est-ce qui se passe est que, si vous avez une déclaration comme delete * from Table1 where id between 70 and 1296
, la première chose que fera le processeur de requêtes SQL consiste à analyser la table et à rechercher les enregistrements de cette plage, puis à appliquer une suppression.
vous pouvez aussi simplement changer votre suppression en select *
et tester votre sélection
les enregistrements sélectionnés seront les mêmes que ceux supprimés
vous pouvez également encapsuler votre déclaration dans un début/une annulation si vous n’êtes pas sûr - testez l’instruction puis, si tout va bien, supprimez la restauration.
par exemple
SELECT * FROM table où ID entre 79 et 296
montrera tous les enregistrements correspondant au où si ce sont les veut que vous 'voulez' vraiment supprimer puis utilisez
SUPPRIMER DE LA table OERE id entre 79 et 296
Vous pouvez également créer un déclencheur/qui intercepte les suppressions et les place dans une table d'historique.
donc si vous supprimez quelque chose par erreur, vous pouvez toujours le récupérer
(gardez vos enregistrements de la table d'historique pas plus vieux que 6 mois ou tout ce que les règles d'affaires disent