2010-10-06 15 views
2

Puis-je utiliser plusieurs conditions WHEN dans la clause UPDATE pour mettre à jour une colonne unique.Requête SQL Update

Je veux mettre à jour la table TABLE ayant des colonnes ID et NOM:

est inférieure à la requête correcte?

UPDATE TABLE 
    SET id = CASE id 
       WHEN id IN (2, 3, 4) THEN 1 
       WHEN id= 5 THEN 8 
       WHEN id IN(9, 7) THEN 6 
WHERE name = 'abc' 

Répondre

5

Oui, cela est permis, mais enlever ID après CASE. Et, vous devez END votre cas.

UPDATE TABLE 
SET ID = CASE 
    when ID in (2,3,4) 
     then 1 
    when ID = 5 
     then 8 
    when ID in (9,7) 
     then 6 
END 
where NAME = 'abc' 

Il existe deux syntaxes alternatives pour CASE. Comme ci-dessus, et l'autre où vous voulez comparer une valeur unique contre les autres, comme celui-ci:

UPDATE TABLE 
SET ID = CASE ID 
    when 2 
     then 1 
    when 5 
     then 8 
    when 7 
     then 6 
END 
where NAME = 'abc' 
+1

+1 Vous décrivez [Simple vs CAS recherché] (http://msdn.microsoft.com/en-us/library/ms181765.aspx) – gbn

2

Case est disponible en deux versions:

version 1:

Case Id 
    When 2 Then 1 
    When 3 Then 1 
    When 4 Then 1 
    When 5 Then 8 
    When 7 Then 6 
    When 9 Then 6 
    End 

version 2 :

Case  
    When Id in (2,3,4) Then 1 
    When Id = 5  Then 8 
    When Id in (9,7) Then 6 
End 

Les deux ci-dessus sont equivilent

+0

grâce à vous deux .. :) c'était vraiment utile –