如何根据数据库中的当前值更新数据库。我目前有以下内容 -
mysqli_query($con,
"UPDATE Tasks
SET completed = CASE WHEN completed == 0 THEN 1 ELSE 0 END
WHERE inde=$q");
以上不起作用,但是当我尝试
时mysqli_query($con,
"UPDATE Tasks
SET completed = 1
WHERE inde=$q");
它改变了值,当它为0时是正确的但我也想在它为1时将其改为0.有人能告诉我我做错了什么
答案 0 :(得分:8)
应该是:
UPDATE Tasks set completed= IF(completed=1, 0, 1) WHERE inde=$q LIMIT 1
限制1,如果inde是唯一索引,则加快更新速度(小表的小数,对于大表可能值得)
...限制1可能什么都不做,可能是个坏主意。 Is there any point using MySQL "LIMIT 1" when querying on indexed/unique field?
答案 1 :(得分: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
答案 2 :(得分:0)
尽管这个问题已经得到解答,但我只是想提出快速和最短的答案,前提是完成后只保留0和1。
UPDATE Tasks set completed=!completed WHERE inde=$q
注意NOT(!)
运算符将切换值本身,即将1更改为0,将0更改为1。