Disons que j'ai un tableau tbl avec les colonnes id et titre. Je dois changer toutes les valeurs de la colonne de titre:Est-il possible d'effectuer plusieurs mises à jour avec une seule instruction SQL UPDATE?
- de 'A1' à 'A1',
- de 'a.1' à 'A1',
- de « b-1 'à' b1 ',
- de' b.1 'à' b1 '.
En ce moment, je joue deux UPDATE:
UPDATE tbl SET title='a1' WHERE title IN ('a-1', 'a.1')
UPDATE tbl SET title='b1' WHERE title IN ('b-1', 'b.1')
Ce n'est pas du tout un problème, si la table est petite, et la seule déclaration complète en moins d'une seconde et Vous n'avez besoin que de quelques instructions à exécuter.
Vous l'avez probablement invité - j'ai une énorme table à traiter (une déclaration complète en environ 90 secondes), et j'ai un grand nombre de mises à jour à effectuer.
Donc, est-il possible de fusionner les mises à jour pour ne balayer la table qu'une seule fois? Ou peut-être, il y a une meilleure façon de faire face à une telle situation.
EDIT: Notez que les données réelles avec lesquelles je travaille et les modifications que je dois effectuer ne sont pas si simples: les chaînes sont plus longues et ne suivent aucun modèle (ce sont des données utilisateur) , donc aucune hypothèse ne peut être faite - cela peut être n'importe quoi).
Donc, en déduisant de votre commentaire EDIT, les chaînes elles-mêmes peuvent être différentes, mais la mise à jour que vous tentez suit-elle un modèle? Si oui, qu'est-ce que c'est? Si rien n'a un motif, alors il n'y a pas de solution, vous devez coder chaque mise à jour idiosyncrasique individuellement. –
J'ai une liste de valeurs * correctes *, et j'ai une liste clairement spécifiée de * mauvaises * valeurs (et quelle valeur doit être fausse changé à quelle valeur correcte). Donc oui - les mises à jour ont un motif. En bref - chaque mise à jour modifie UNE valeur, mais seulement si l'ancienne valeur est IN dans la liste de valeurs spécifiée. – Paulius