情况下,更新
问题描述:
我有这个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
已经添加到任col1
或col2
,如果它存在于任一列,然后不更新列前检查。 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,不需要更新。
答
试试这个
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
或许你可以举个例子.. – 2013-03-16 13:18:52
更新我的问题 – kabuto178 2013-03-16 13:49:53