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.
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;
Que diriez-vous d'utiliser IN
DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
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
);
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.
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));
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.
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.
DELETE FROM table_name WHERE id BETWEEN 1 AND 256;
Essayez Ceci.