0

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

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。有人可以告诉我我做错了什么

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 回答
0

但是,即使这个问题已经得到解答,我只想提出快速和最短的答案,前提是已完成仅包含 0 和 1。

UPDATE Tasks set completed=!completed WHERE inde=$q

请注意NOT(!)将切换值本身的运算符,即将 1s 更改为 0s 并将 0s 更改为 1s。

于 2013-06-10T10:16:47.040 回答