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 )

私の問題は、1 人のユーザーがこれに 2 回アクセスできるようにスクリプトが設定されているためval1col1 and col2.

val1追加する前に、どちらかval1に既に追加されているかどうかを確認したい、col1またはcol2いずれかの列に存在する場合は、列を更新しないようにします。val1 = ユーザー ID 現在、これが発生する可能性があります。ユーザー 1 と 2 の両方がこの更新スクリプトにアクセスできるため、どちらかが 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 に答える