2010-11-28 37 views
4

J'ai une table qui ressemble à ceci:Mettre à jour plusieurs lignes avec mySQL

property propertyid value 
active  1   1 
datastore 2   apc 

Comment puis-je formuler une requête SQL pour mettre à jour quelques lignes, sans mettre à jour tous. IE, s'il y avait 6 lignes, mettre à jour 2,3 et 4 mais pas 1,5 et 6?

Merci.

+0

Mettre à jour "both" de quoi? Quelle colonne est 1-6? –

+0

Clarification: La table a trois colonnes: propriété, propriété et valeur. Clarifié à la fois en question. – bear

+1

mettre à jour des lignes différentes avec la même valeur ou des valeurs différentes? –

Répondre

9

Si c'est la ou les mêmes colonnes que vous mettez à jour sur toutes les lignes avec la même valeur, vous pouvez le faire facilement avec une requête comme celle-ci.

UPDATE property SET value=5 where propertyid IN(2,3,4) 

Ceci règlera la valeur 5 à toutes les lignes où l'ID de propriété est soit 2,3 ou 4.

Si vous souhaitez mettre à jour les différentes lignes avec des valeurs différentes, je crains que vous devrez écrire des instructions SQL séparées. Vous pourriez venir avec une requête SQL en utilisant l'instruction CASE mais elle serait très lisible et maintenable avec une requête SQL simple. En supposant que vous manipuliez la base de données à partir d'une application, je suis sûr que quel que soit le langage de programmation que vous utiliserez, il sera facile d'écrire 1 instruction SQL et de boucler, remplacer les valeurs et exécuter la requête OU ajouter toutes les instructions de mise à jour SQL à une chaîne (en boucle) et passez-le à la base de données pour exécuter tout à la fois. Je suis désolé, je ne sais pas si l'un ou l'autre aurait un impact significatif sur les performances par rapport à l'autre, mais je crois que l'exécution en une fois aurait un certain avantage en termes de performance.

+0

Alors que ce n'était pas la réponse exacte que je cherchais, vous avez confirmé ma suspicion que ce que je voulais réaliser n'était pas réalisable. – bear