[前][次][番号順一覧][スレッド一覧]

mysql:10264

From: 柴垣 <柴垣 <akiro@xxxxxxxxxx>>
Date: Sun, 03 Oct 2004 13:28:07 +0900
Subject: [mysql 10264] Re: 複数のレコードを参照した条件で一つのレコードを書き換える

とりあえずは自己レスです。

 あまりいい方法は思い浮かばなかったのですが、
フィールドに、レコードの全体を反映するフィールドを追加して
当面は解決するつもりです。

 table0 のフィールドを、field0= 'MyID'、field1='MyValue'、
field2='TotalValue' とします。
 TotalValue には、MyValueフィールドの全レコードの和を常に
入れておくことにします。(実際には、値があるのは一つですが)

MyID=n に MyValue=nnn の値をセットするときは

update table0 set MyValue=if(MyID=n,nnn,0), TotalValue=nnn
 where TotalValue=0;

リセットするときは、

update table0 set MyValue=0, TotalValue=0
 where TotalValue=nnn;

とします。

 他のレコードを参照して、当のレコードを書き換えるには
それほど一般性のある解法ではなく、またこれだけの動作なら
一つだけのレコードで実現させることもできると思うのですが
ひとまず現時点の報告です。


> 排他処理的な動作をさせたい場面の update 文で
> 
> 「すべてのレコードの、指定したフィールドが 0 の場合のみ
> そのレコードの指定したフィールドに値を入れる」
> 
> といった処理をさせたいのですが、そんなSQL 文はあるので
> しょうか。MySQL は、mysql-3.23.55-win を使用しています。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

 柴垣 顕郎 akiro@xxxxxxxxxx

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/



[前][次][番号順一覧][スレッド一覧]

     10262 2004-10-01 19:56 [柴垣 <akiro@xxxxxxxx] 複数のレコードを参照した条件で一つのレコードを書き換える
->   10264 2004-10-03 13:28 ┗[柴垣 <akiro@xxxxxxxx]