2016-01-13 48 views
-1
UPDATE `table` SET `repeat_id` = NULL WHERE (`repeat_id` == 0 AND `entry_type` == 0) 

我有点紧张,只是尝试一下, repeat_id为NULL(将entry_type留为0)...在两个值都为0的情况下将值设置为NULL

我在这里犯了什么严重的错误吗?代码实际上会这样做吗?谈到SQL时,我很新奇。

+3

你测试过了吗? (最好在测试系统上) –

+1

你在用单引号或双引号将单引号混淆。我投票结束诸如简单的印刷错误等问题。 –

回答

2

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

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

无论如何,它总是一个好主意,不尝试查询生产数据库 - 试运行它首先在一个发展表格上,或者在原始表格的副本上。最终,你可能需要将更新限制在几个记录:

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列)。

+0

到目前为止不错,但我会反编号的id列,以及你在其他地方做。 – AMartinNo1

2

您只需要更正语法。

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

注意:single-quote s为固定值。此外,平等检查只需要=

1

另外两个答案解决您的语法错误。本文介绍了一种对更新进行谨慎的方法。从具有与更新查询相同的where子句的选择查询开始:

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; 

运行更多选择查询来检查更新结果。当您足够自信时,运行原始更新查询。

相关问题