2013-03-16 146 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

相关问题