如果没有,我想在此时更新我的表以设置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
。
答案 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;