0
votes

Supprimer plusieurs lignes par identifiant dans SQL

J'ai une grande liste d'identifiants que je dois supprimer d'une base de données SQL:

DELETE 
  FROM `ixml_prd_map` 
 WHERE `ixml_prd_map`.`id` = B14260V"

Actuellement, je supprime des éléments uniques avec:

B14260V;B14261;B14261V;B14262;B14264;B14264V;B14265

Il est en quelque sorte possible de supprimer par lots des éléments avec la liste donnée?


3 Réponses :


1
votes

Vous voulez find_in_set() :

delete from ixml_prd_map
where id in ('B14260V', 'B14261', 'B14261V')

find_in_set() renvoie la position d'un élément dans une liste CSV; il s'attend à ce que le séparateur soit la virgule, donc si vous avez vraiment des points-virgules, vous devez changer cela, comme indiqué dans la requête ci-dessus.

Une meilleure option serait de fournir votre entrée sous forme de liste appropriée de valeurs, comme dans:

delete from ixml_prd_map
where find_in_set(replace(@mylist, ';', ','), id)


0 commentaires

1
votes
DELETE FROM ixml_prd_map WHERE id IN (...your id list...)

0 commentaires

1
votes

Utilisez l'opérateur IN .

Exemple:

DELETE FROM `ixml_prd_map` WHERE `ixml_prd_map`.`id` IN ("B14260V", "B14261", "B14261V")


0 commentaires