0

How do I update the database according to the current values in it. I currently have the following -

mysqli_query($con,
"UPDATE Tasks
SET completed = CASE WHEN completed == 0 THEN 1 ELSE 0 END
WHERE inde=$q");

The above doesn't work but when I try to do

mysqli_query($con,
"UPDATE Tasks
SET completed = 1
WHERE inde=$q");

it changes the value when ever it is 0 which is correct but I also want to change it to 0 when it is 1. Can someone tell me what I am doing wrong

4

3 に答える 3

8

それは次のとおりです。

UPDATE  Tasks set completed= IF(completed=1, 0, 1) WHERE inde=$q LIMIT 1

制限 1、inde が一意のインデックスの場合、更新を高速化します (小さなテーブルではわずかですが、大きなテーブルでは価値があるかもしれません)

... 制限 1 はおそらく何もせず、悪い考えかもしれません。 インデックス付き/一意のフィールドでクエリを実行するときに、MySQL「LIMIT 1」を使用する意味はありますか?

于 2013-06-10T00:08:38.753 に答える
1
CASE WHEN completed == 0 THEN 1 ELSE 0 END

これは次のようになります。

CASE WHEN completed = 0 THEN 1 ELSE 0 END

また:

CASE completed WHEN 0 THEN 1 ELSE 0 END
于 2013-06-10T00:09:03.097 に答える