web-dev-qa-db-fra.com

Supprimer beaucoup de lignes d'une table en utilisant id dans Mysql

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.

51
Kevin Parker

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;
132
JoDev

comment utiliser IN

DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
7
John Woo

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.

5
Ghigo

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
);
5
cowls

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.

3
Boris the Spider

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.

3
Vivek Todi

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));
3
MuhammadHani
DELETE FROM table_name WHERE id BETWEEN 1 AND 256;

Essaye ça.

1
sameer kumar

J'espère que ça aide: 

DELETE FROM tablename 
WHERE tablename.id = ANY (SELECT id FROM tablename WHERE id = id);
0
mangrove108