2010-04-24 7 views
1

Requête sur Où X mise à jour Y et où A mise à jour B dans une colonne Table Mysql.Je souhaite rechercher et remplacer plusieurs valeurs dans une colonne de table dans une requête MYsql

Comment faire cela dans MYsql dans une requête sur la même colonne dans une table spécifique. Je souhaite rechercher et remplacer plusieurs valeurs dans une colonne de table.

Conditions dans le tableau 1 dans colonne1

Where X update Y 
and 
Where a update b 
and 
Where 1 update 2 
and 
Where 3 update 4 
and 
Where value1 update value 2 

Et ainsi de suite.

Je peux le faire individuellement, mais comment puis-je le faire plus rapidement? Y at-il une fonction mysql pour m'aider avec ça?

J'ai environ 120 colonnes avec 200 valeurs de recherche et de remplacement/mise à jour pour chaque colonne.

Merci.

+0

Ou laissez-moi savoir si ce n'est pas possible, donc je m'arrête de me taper la tête à propos de faire cela d'une manière innovante. – user204245

+0

Votre question est très confuse. Que voulez-vous dire par «Où 1 mise à jour 2». Qu'est-ce que "1" dans ce contexte? D'où est ce que ça vient? –

Répondre

1

Vous pouvez utiliser quelque chose comme ceci:

update table table set A = if(conditionA, newA, A), B = if(conditionB, newB, B) 

mais je pense qu'il sera plus lent que 2 mises à jour séparées, car il tente de réinitialiser la valeur de chaque ligne à lui-même quand il ne correspond pas à la condition .

Vous pouvez l'optimiser un peu en ajoutant:

update table table set A = if(conditionA, newA, A), B = if(conditionB, newB, B) 
where conditionA or conditionB 

Cela pourrait être plus rapide que 2 requêtes dans certaines circonstances.

0

Vous pouvez faire quelque chose comme ceci:

UPDATE table1 
SET 
    col1 = CASE WHEN col2 THEN a ELSE col1 END, 
    col3 = CASE WHEN col4 THEN b ELSE col3 END 

Notez que ce définit une valeur à lui-même si la condition échoue, provoquant effectivement qu'il soit inchangé.

Questions connexes