2011-12-31 7 views
1

私はそうのような2つのクエリ、1つのcronで2つのmysqlクエリを実行する必要があります。

$q = $dbc -> prepare("UPDATE accounts SET motivation = motivation+100 WHERE motivation <= maxMotivation-100"); 
$q -> execute(); 

$q = $dbc -> prepare("UPDATE accounts SET motivation = maxMotivation WHERE motivation > maxMotivation-100"); 
$q -> execute(); 

を持っているそれは基本的に数が許容最大数を超えることができませんことを保証します。しかし、問題は、それがcronjobに入っていることです。だから私はこれをどのように1つの声明で行うことができますか?最初に失敗した場合は2番目に失敗するか、最初に成功した場合は2番目をスキップします。 mysql if文のある方法はありますか?

答えて

1

2つのクエリでこれを行う必要はありません。あなたはテーブル内の各モチベーション値に100を追加しているようです。それがmaxMotivationを超えた場合は、その値を使用します。これは、WHERE句のないワンショットで実行できます。

$q = $dbc -> prepare("UPDATE accounts SET motivation = LEAST(motivation+100, maxMotivation)"); 
$q -> execute(); 
+0

恐縮です!これは決して存在しませんでした! – cgweb87

関連する問題