2010-10-06 4 views
2

Могу ли я использовать несколько условий WHEN в статье UPDATE, чтобы обновить один столбец.Запрос SQL Update

Я хочу, чтобы обновить таблицу таблицу, содержащую столбцы ID и NAME:

ниже запроса правильно?

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' 

ответ

5

Да, это разрешено, но удалить ID после CASE. И вам нужен END ваш случай.

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' 

Существует два альтернативных синтаксиса для CASE. Как и выше, а другой, где вы хотите, чтобы сравнить одно значение по отношению к другим, как это:

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

+1 Вы описываете [Простой vs Searched CASE] (http://msdn.microsoft.com/en-us/library/ms181765.aspx) – gbn

2

Дело поставляется в двух вариантах:

версия 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 

версия 2 :

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

Оба выше equivilent

+0

благодаря обоим вам .. :) это было действительно полезно –

Смежные вопросы