2013-03-16 142 views
0

我有這個UPDATE查詢情況下,更新

UPDATE table SET 
col2 = (CASE WHEN (col1 <> 0 AND col2 = 0) THEN val1 ELSE col2 END), 
col1 = (CASE WHEN (col1 = 0) THEN val1 ELSE col1 END) 

我的問題是,該腳本設置的方式,一個用戶可以訪問此兩次因此val1將是col1 and col2

我想加入val1如果val1已經添加到任col1col2,如果它存在於任一列,然後不更新列前檢查。 val1 =一個用戶ID 目前可能發生這種情況,用戶1和用戶2都可以訪問這個更新腳本,所以如果他們中的任何一個訪問它兩次,他們的ID將被放置在col1和col2中,這是我的問題。

id col1 col2 
1 val1 val1  
2 val2 val2 

,我想這樣的事情,而不是

id col1 col2 
1 val1 val2  
2 val2 val1 

如果任COL1 COL2或存在VAL1,不需要更新。

+0

或許你可以舉個例子.. – 2013-03-16 13:18:52

+0

更新我的問題 – kabuto178 2013-03-16 13:49:53

回答

0

試試這個

UPDATE table SET 
    col2 = (if (col1 <> 0 AND col2 = 0) ,val2 , if ((col1 = 0 and col2 <> 0) , col2 , if ((col1 = 0 and col2 = 0) , val1 , col2))), 
    col1 = (if (col1 = 0 and col2 <> 0) , val2 , if ((col1 <> 0 and col2 = 0) , col1 , (if (col1 = 0 and col2 = 0),val1 , col1))) 
+0

調整這個回答一下,適用於我的情況。 – kabuto178 2013-03-17 18:07:33

相關問題