Supprimer plusieurs lignes d'une table en utilisant id dans Mysql

Je suis un administrateur Linux avec seulement des connaissances de base dans les requêtes Mysql

je veux supprimer de nombreuses entrées de table qui sont des adresses ip de ma table en utilisant id,

actuellement j'utilise

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,parce que je veux sauter la suppression de certaines entrées de ce 254.

suppression de la table entière et importation nécessaire les entrées ne sont pas une option.

43
demandé sur John Woo 2013-03-19 19:44:44

8 réponses

La meilleure façon est d'utiliser IN déclaration :

DELETE from tablename WHERE id IN (1,2,3,...,254);

vous pouvez aussi utiliser BETWEEN si vous avez consécutives Id :

DELETE from tablename WHERE id BETWEEN 1 AND 254;

vous pouvez bien sûr limiter pour certains ID en utilisant la clause other WHERE:

DELETE from tablename WHERE id BETWEEN 1 AND 254 AND id<>10;
119
répondu JoDev 2013-03-19 15:58:19

Que diriez-vous d'utiliser IN

DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
7
répondu John Woo 2013-03-19 15:45:38

quelque chose comme ça pourrait le rendre un peu plus facile, vous pourriez évidemment utiliser un script pour générer ceci, ou même excel

DELETE FROM tablename WHERE id IN (
1,
2,
3,
4,
5,
6
);
5
répondu cowls 2013-03-19 15:46:00

si vous avez besoin de garder seulement quelques lignes, considérez

DELETE FROM tablename WHERE id NOT IN (5,124,221);

ceci ne conservera que quelques enregistrements et en rejettera d'autres.

5
répondu Ghigo 2013-03-19 15:49:11

Utiliser IN Clause

   DELETE from tablename where id IN (1,2);

OU vous pouvez fusionner l'utilisation de BETWEEN et NOT IN pour diminuer les nombres que vous devez mentionner.

DELETE from tablename 
where (id BETWEEN 1 AND 255) 
AND (id NOT IN (254));
3
répondu MuhammadHani 2013-03-19 15:46:29

d'Autres ont suggéré IN, c'est très bien. Vous pouvez également utiliser une gamme:

DELETE from tablename where id<254 and id>3;

Si l'id à supprimer sont contigus.

3
répondu Boris the Spider 2013-03-19 15:49:20

si vous avez une "condition" dans vos données pour calculer l'ids 254, vous pouvez utiliser:

delete from tablename
where id in 
(select id from tablename where <your-condition>)

ou tout simplement:

delete from tablename where <your-condition>

il suffit de coder les 254 valeurs de la colonne id serait très difficile dans tous les cas.

3
répondu Vivek Todi 2013-03-19 15:52:47
DELETE FROM table_name WHERE id BETWEEN 1 AND 256;

Essayez Ceci.

1
répondu sameer kumar 2014-09-30 10:23:54