Je suis un administrateur Linux n'ayant que des connaissances de base dans Mysql Queries
Je veux supprimer beaucoup d'entrées de table qui sont l'adresse ip de ma table en utilisant id ,
j'utilise actuellement
DELETE from tablename where id=1;
DELETE from tablename where id=2;
mais je dois supprimer 254 entrées, donc cette méthode va prendre des heures, comment puis-je dire à mysql de supprimer les lignes que je spécifie, car je veux ignorer la suppression de certaines entrées de cette 254.
La suppression de la table entière et l'importation des entrées nécessaires n'est pas une option.
Le meilleur moyen est d'utiliser l'instruction IN
:
DELETE from tablename WHERE id IN (1,2,3,...,254);
Vous pouvez également utiliser BETWEEN
si vous avez des identifiants consécutifs:
DELETE from tablename WHERE id BETWEEN 1 AND 254;
Vous pouvez bien sûr limiter certains identifiants en utilisant une autre clause WHERE:
DELETE from tablename WHERE id BETWEEN 1 AND 254 AND id<>10;
comment utiliser IN
DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
si vous ne devez garder que quelques lignes, considérez
DELETE FROM tablename WHERE id NOT IN (5,124,221);
Cela ne gardera que certains enregistrements et en rejetera d’autres.
Quelque chose comme cela pourrait le rendre un peu plus facile, vous pouvez évidemment utiliser un script pour générer cela, ou même Excel
DELETE FROM tablename WHERE id IN (
1,
2,
3,
4,
5,
6
);
D'autres ont suggéré IN
, c'est bien. Vous pouvez également utiliser une plage:
DELETE from tablename where id<254 and id>3;
Si les identifiants à supprimer sont contigus.
Si vous avez une "condition" dans vos données pour déterminer les 254 identifiants, vous pouvez utiliser:
delete from tablename
where id in
(select id from tablename where <your-condition>)
ou simplement:
delete from tablename where <your-condition>
Coder simplement en dur les 254 valeurs de la colonne id serait très difficile dans tous les cas.
Utiliser la clause IN
DELETE from tablename where id IN (1,2);
OU vous pouvez fusionner l'utilisation de BETWEEN
et NOT IN
pour réduire les nombres que vous devez mentionner.
DELETE from tablename
where (id BETWEEN 1 AND 255)
AND (id NOT IN (254));
DELETE FROM table_name WHERE id BETWEEN 1 AND 256;
Essaye ça.
J'espère que ça aide:
DELETE FROM tablename
WHERE tablename.id = ANY (SELECT id FROM tablename WHERE id = id);