将值设置为 NULL,其中两个值均为 0

Set value to NULL where both values are 0

UPDATE `table` SET `repeat_id` = NULL WHERE (`repeat_id` == 0 AND `entry_type` == 0)

我有点紧张,只是尝试一下,我相当确定这会做我想做的,这是针对 repeat_id 和 entry_type 都为 0 的每一行设置 repeat_id 到 NULL(将 entry_type 保留为 0)...

我在这里犯了什么严重的错误吗?代码真的会这样做吗?对于 SQL.

我还是个新手

您只需要更正语法即可。

UPDATE `table` SET repeat_id = NULL
WHERE repeat_id = 0 AND entry_type = 0

注意:single-quotes 是常量值。此外,相等性检查只需要 =.

你必须使用反引号而不是引号,而不是 == 你必须只使用一个 =

UPDATE `table`
SET
  `repeat_id` = NULL
WHERE
  `repeat_id` = 0 AND `entry_type` = 0

无论如何,最好不要在生产数据库上尝试查询 - 首先在开发 table 或原始 table 的副本上尝试 运行 它。最终您可能希望将更新限制为几条记录:

UPDATE `table`
SET
  `repeat_id` = NULL
WHERE
  id in (1,2,3,4)
  and `repeat_id` = 0 AND `entry_type` = 0

这将 运行 仅查询记录 1、2、3、4(如果您有 id 列)。

其他两个答案解决了您的语法错误。这一个描述了一种在更新时谨慎行事的方法。从具有与更新查询相同的 where 子句的 select 查询开始:

select *
from table
where repeat_id = 0
and entry_type = 0;

查看输出。找到可以让您只更新一条记录的东西。

update table
set repeat_id = null
where repeat_id = 0
and entry_type = 0
and further filters to restrict update to one record;

运行 更多 select 查询以检查更新结果。当您有足够的信心时,运行原始更新查询。