2

我正在尝试做一个简单的 mysql 更新语句,或者至少我认为这是一个简单的更新语句。它执行成功,但它与指定的条件不匹配并且不会更新表......谁能看到我做错了什么?

update messagequeue set timesent = curtime() where deviceid = '1231231237' and timesent = NULL

表中有 4 列和 1 行。

id, message, deviceid, timesent

the timesent is default null.
the deviceid is '1231231237'
id = 1
message is just some junk....

查询不起作用:(

4

3 回答 3

3
update messagequeue set timesent = curtime() where deviceid = '1231231237' and timesent IS NULL
于 2012-06-18T18:04:49.077 回答
1

正确的。'=' 不适用于 NULL,因此您应该使用 Sebas 的回答中的 'IS NULL'。

于 2012-06-18T18:07:20.713 回答
1
UPDATE messagequeue SET timesent = curtime() WHERE deviceid = '1231231237' AND timesent IS NULL

NULL 不会像您定义的那样工作,请改用 IS NULL 检查。

还要检查数据类型 'deviceid' 。如果它是 Int,那么不要使用单引号,像这样使用它:

UPDATE messagequeue SET timesent = curtime() WHERE deviceid = 1231231237 AND timesent IS NULL
于 2012-06-18T18:09:48.617 回答