根据其中的当前值更新mysql数据库

时间:2013-06-10 00:04:20

标签: php mysql

如何根据数据库中的当前值更新数据库。我目前有以下内容 -

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.有人能告诉我我做错了什么

3 个答案:

答案 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。