Comment supprimer d'une table où l'ID est dans une liste d'ID?

91

si j'ai une liste d'ID (1, 4, 6, 7) et une table de base de données dans laquelle je veux supprimer tous les enregistrements où l'ID est dans cette liste, quelle est la façon de le faire?

Léora
la source

Réponses:

168

Votre question épelle presque le SQL pour ceci:

DELETE FROM table WHERE id IN (1, 4, 6, 7)
Matti Virkkunen
la source
@jayarjo: Toute différence serait probablement assez négligeable, et je ne pense pas qu'il y ait une raison pour laquelle la suppression un par un serait de toute façon plus efficace.
Matti Virkkunen
C'est juste là que la performance peut toucher la commodité. Par exemple, j'ai déjà des fonctions pour le faire une par une en place. Mais s'il y avait une chance d'augmenter les performances, je pourrais écrire du code supplémentaire, sinon cela n'en vaudra probablement pas la peine.
jayarjo
8
Un par un serait presque certainement plus lent, certainement sur Oracle ou PostgreSQL. Décomposer les opérations SQL en plusieurs opérations plus petites est un excellent moyen d'obtenir de mauvaises performances.
David Aldridge
1
J'ai trouvé que 10 000 éléments de la clause In prenaient environ 200 secondes, mais 1000, 3 secondes (ou 30 secondes en comparaison normalisée). La taille importe.
ohmusama
12
delete from t
where id in (1, 4, 6, 7)
Carl Manaster
la source