2010-10-06 93 views
2

我可以在UPDATE子句中使用多個WHEN條件來更新單個列。SQL更新查詢

我想更新其列ID和名稱表的表:

是下面的查詢是否正確?

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

是的,這是允許的,但CASE後刪除ID。而且,您需要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你正在描述[簡單與搜索案例](http://msdn.microsoft.com/en-us/library/ms181765.aspx) – gbn 2010-10-06 18:24:34

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

感謝你們.. :)這真的很有幫助 – 2010-10-06 18:47:32