UPDATE表WHERE其他列为NULL

时间:2018-01-12 14:14:56

标签: mysql

如果没有,我想在此时更新我的​​表以设置Destroy时间戳。 Destroy时间戳定义为比Created多5-10天。

decayworld:

+------------+---------+
| Created    | Destroy |
+------------+---------+
| 1515765721 |    NULL |
| 1515765743 |    NULL |
| 1515765743 |    NULL |
| 1515765743 |    NULL |
| 1515765744 |    NULL |
+------------+---------+

我的代码出了什么问题?

UPDATE decayworld AS a
SET a.Destroy=(SELECT FLOOR (a.Created+RAND()*(864000-432000+1))+432000)
WHERE a.Destroy=(NULL)
;

其实我得到0 rows are affected

3 个答案:

答案 0 :(得分:1)

您无法field = NULL,而是使用field IS NULL

尝试以下代码:

UPDATE decayworld AS a
SET a.Destroy=(SELECT FLOOR (a.Created+RAND()*(864000-432000+1))+432000)
WHERE a.Destroy IS NULL;

如果您想了解更多关于在mysql中使用NULL值的信息:https://dev.mysql.com/doc/refman/5.7/en/working-with-null.html

答案 1 :(得分:0)

在MySQL(其他人)中,你需要使用IS NULL而不是= NULL,这将等于false。

答案 2 :(得分:0)

您需要检查is null

Destroy列为空时,您的条件变为null = null,返回null - 这不是真的!

请尝试以下代码:

select null = null; 
select null is null;