2012-11-30 2 views
2

je l'instruction SQL suivante que je l'ai écrit à mettre à jour des valeurs de tables:Mise à jour plusieurs valeurs dans une colonne

Update Table 
SET S_Type = 'Versus' 
Where S_Type = 'REGULAR' 
SET S_Type = 'Free' 
Where S_Type = 'CASH'; 

My SQL est plutôt rouillé, et mon collègue m'a dit quelque chose était avec elle, mais DIDN ne me dis pas quoi!

La seule chose qui me vient à l'esprit est que je n'ai pas fait référence à la Table.Column dans l'ensemble et Où code.

Y at-il un problème lors de la mise à jour d'une colonne en tant que telle? Quelle est la meilleure pratique lors de la mise à jour d'une colonne pour plusieurs valeurs?

Vive

+0

Votre collègue a raison. Vous ne pouvez pas utiliser 'Set' deux fois dans la même' Update'. Soit suivez la réponse de podiluska, ou écrivez deux 'Update's, un pour chaque valeur que vous voulez remplacer. – David

Répondre

6

Ici, nous utilisons instruction case et trouver comme résultat que la clause where:

update tablename 
set S_Type = (case S_Type when 'REGULAR' then 'Versus' 
          when 'CASH' then 'free' 
          else s_type 
          end) 
2
Update YourTable 
set S_Type = 
    case S_Type 
     when 'REGULAR' then 'Versus' 
     when 'CASH' then 'free' 
     else s_type 
     end 
0

Utilisez-vous SQL Server? Si vous utilisez 2012, vous pouvez maintenant écrire des déclarations de mise à jour conditionnelle simplifiée en utilisant la nouvelle ou IIF CHOISISSENT dispose par exemple:

Update YourTable 
set S_Type = IIF(S_Type = 'REGULAR', 'Versus', 'free') 

Mes deux cents vaut.

Questions connexes