我有这个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
已添加到任一列中,则我需要先检查id col1 col2
1 val1 val1
2 val2 val2
,然后再更新列。
val1 =用户ID
目前可能会发生这种情况,用户1和2都可以访问此更新脚本,因此如果他们中的任何一个访问它两次,他们的ID将被放置在col1和col2中,这是我的问题。
id col1 col2
1 val1 val2
2 val2 val1
我想要这样的东西
{{1}}
如果val1存在于col1或col2中,则不需要更新。
答案 0 :(得分: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 )) )