2012-01-26 11 views
0

フィールドを負の増分で更新する方法は不思議でしたが、新しい値が1より小さい場合は、フィールドが1の場合は、他のフィールドを更新します。その他の更新フィールド=(フィールド-1)

caseまたはif/elseブロック内にステートメントを挿入して更新することはできますか?

現在、私は、PHPで評価し、2番目のクエリを実行し、現在の値を取得するには、SELECT文をしています:あなたは1つのクエリでこの操作を行うことができれば

if ($row['field']==1) { "DELETE from table WHERE k='123'" } else { "UPDATE table SET field=(field-1) WHERE k='123'" }

は不思議?

+5

それを行うだろうか? – BugFinder

+0

なぜ2つのステップでそれをしないのですか?すべての行を削除し、更新を別のクエリとして実行します。 – JohnFx

答えて

1

このようなものをお探しですか?

DELETE FROM table WHERE (field-1) < 1 
UPDATE table SET field = (field-1) WHERE (field-1) >= 1 
0

私はあなたが何をしようとしたのと同時に、すべての更新プログラムがデータベースの他のユーザーによって見られていることを確認するために、トランザクションに

Begin 
Delete from my_table where my_field <= 1 
Update my_table set my_field = my_field - 1 
Commit 
関連する問題