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已添加到其中一个,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

如果 val1 存在于 col1 或 col2 中,则不需要更新。

4

1 回答 1

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 )) )
于 2013-03-16T15:20:26.167 回答